2017-07-03 3 views
-2

私はPythonを学習中ですが、現在はJSONファイルタイプを使いこなしています。私のJSONファイルの列を整列させるためには、int/floatの幅を固定して表現できる必要があります。トーナメントがプレイしている場合つまり、私はこれの幅をフォーマットしようとしたとき、私は、しかしPython:JSONフィールドの幅が固定されています

{"name": "someName", "ranking": " C ", "tournamentsPlayed":  5} 

代わりの

{"name": "someName", "ranking": " C ", "tournamentsPlayed": 5} 

を取得する必要があります5ですが、私は、フィールドの幅は4になりたいです値は、ファイルにjson.dump'ing前に、それはそれを文字列に変換し、私は戻って整数にフォーマットされた値を変換しようとしましたが、それはバックとしてだけであることに戻り

{"name": "someName", "ranking": " C ", "tournamentsPlayed": " 5"} 

を取得し終わります長いそれn 2番目のコードスニペットと同じになります。私はこれがJSONの独占的な問題ではないことを知っていますし、int表現をすべて一緒にする必要がありますが、これも可能ですか?どんな助けもありがとう。

+1

なぜJSONファイルを整列させる必要があるのか​​混乱しています。 JSONはデータ交換形式ですが、表示用ではありません。 –

+1

私はこのようにJSONで整数を整列しようとする人は見たことがありません。 –

+0

JSONは人間が判読可能な正しいことを意味していますか?私はそれをもっと簡単に読むことができるように、すべてのフィールドを整列させることを好みます。これができない場合は、別のテキストファイルを作成してJSONデータをそのように表示することができます。 – RoboJacob5000

答えて

0

これはPython jsonモジュールでは実行できません。

あなたが本当にこれを実現したい場合は、JSON自分自身に手動で出力必要があります - 例えば:

print '{"name": "%s", "ranking": "%s", "tournamentsPlayed": %5d}' % (
    name, ranking, tournamentsPlayed 
) 

あなたはしかし、自分自身をエスケープ処理する必要があります(たとえば、選手名の場合 - 」上の "name"変数には二重引用符があります)。面倒なことはほとんどありません。

+0

私は自分の好みの方法で自分の情報をきれいに印刷するためにJSONを自分自身で出力しています。 「エスケープ」と「プレイ名」とはどういう意味ですか? – RoboJacob5000

+0

@ RoboJacob5000はプレイヤー名を明確にするために私の返信を編集しました。 JSONのような書式を出力しているときに、 "エスケープ"とは、 "or"や "{}"のような文字に対して、文字列の一部として扱われ、特殊なJSON文字として解釈されないようにするためです。 –

+0

さて、私はすでに適切にエスケープ処理していたよりも、%oldschoolの書式設定を使用しているか、ここで適切な選択をしていますか?str.format()を使用しようとしましたが、 – RoboJacob5000

関連する問題