2017-01-11 10 views
0

キー値データを含む変数をPythonを使用してファイルに保存しようとしていますが、印刷しようとすると別の形式で表示されます。変数は印刷時にフォーマットを変更します

私は結果がデータ -

{'icon': '/csa/api/blobstore/Magic_RGB_blue_NT.png?tag=library', 'design': {'@self': '@self'}, 'name': 'name', 'version': '1.0.0', 'description': 'This is my offering'} 
+1

どのように辞書を印刷していますか? –

答えて

7

を印刷しながら、これはあなたがするときに重要であるものを私が手に出力明記していないされてthis-

data={"name":'name',"description": "This is my offering","icon":"/csa/api/blobstore/Magic_RGB_blue_NT.png?tag=library","version": "1.0.0", 
        "design": { 
        "@self": "@self" 
        } 
       } 

のように印刷することにしたいです印刷する方法、および現在印刷しようとしている方法はありません。

辞書にはフォーマットがありません。コード内の書式設定は、コードを人間が読めるようにするだけで、実際にはdata辞書には格納されません(各文字列要素内の書式設定のみが保持されます。

単なる書式(複数の行とインデント)であれば、解決する最も簡単な方法は、Pretty Print moduleまたはJSON moduleのいずれかを使用することです。データを表示し、印刷出力フォーマットに対してどの程度の制御を持たせたいかを選択します。特に、JSON出力は、より垂直方向の画面スペースを占めますが、人間によってはそれが人間の目に見えるほどに読みやすいと考える人もいます。

PrettyPrintのPPRINT:

import pprint 
data={"name":'name',"description": "This is my offering","icon":"/csa/api/blobstore/Magic_RGB_blue_NT.png?tag=library","version": "1.0.0","design": {"@self": "@self"}} 
pp = pprint.PrettyPrinter(indent=4) 
pp.pprint(data) 
>>> 
{ 'description': 'This is my offering', 
    'design': { '@self': '@self'}, 
    'icon': '/csa/api/blobstore/Magic_RGB_blue_NT.png?tag=library', 
    'name': 'name', 
    'version': '1.0.0'} 
>>> 

JSONダンプ:

import json 
data={"name":'name',"description": "This is my offering","icon":"/csa/api/blobstore/Magic_RGB_blue_NT.png?tag=library","version": "1.0.0","design": {"@self": "@self"}} 
print(json.dumps(data, indent=4)) 
>>> 
{ 
    "icon": "/csa/api/blobstore/Magic_RGB_blue_NT.png?tag=library", 
    "design": { 
     "@self": "@self" 
    }, 
    "name": "name", 
    "version": "1.0.0", 
    "description": "This is my offering" 
} 
>>> 

あなたは項目が印刷される順番について懸念している場合は、あなたが持っている必要がありますキーを優先順に格納する配列(辞書には継承順序はありません)を入力し、次にキーを繰り返して辞書項目を手動で出力します。 (おそらくあなたのキー配列のリストの理解を使用して)。

+0

質問よりもはるかに多くの質問がありました。答えが失われないように質問をupvoteするつもりです。 –

0

変数には変更する書式が含まれていないことに注意してください。 PythonインタプリタはREPLまたはファイルからテキストを読み込み、あなたのマシンのCPU用の命令に変換します。これにはprint()を呼び出すまでフォーマットする必要はありません。デフォルトでは、print()str()を呼び出し、非常に基本的な書式設定を行います。辞書には、中括弧、コロン、コンマが含まれます。これ以上のものが必要な場合は、自分で行う必要があります。代わりに、いくつかの退屈さを減らすのに役立つPythonモジュールを見つけることができます。

1

Pythonは、データ構造を定義するために使用するインデントや改行を尊重しません。また、フォーマットを無視します(print())。ここではあまり多くのオプションはありませんが、json.dumps()関数を使用してコードを書式設定することができます。フォーマットは期待どおりの出力とまったく同じではありませんが、かなり近いです:

>>> data = {"name":'name',"description": "This is my offering","icon":"/csa/api/blobstore/Magic_RGB_blue_NT.png?tag=library","version": "1.0.0", 
        "design": { 
        "@self": "@self" 
        } 
       } 
>>> import json 
>>> print(json.dumps(data, indent=2)) 
{ 
    "description": "This is my offering", 
    "version": "1.0.0", 
    "icon": "/csa/api/blobstore/Magic_RGB_blue_NT.png?tag=library", 
    "name": "name", 
    "design": { 
    "@self": "@self" 
    } 
} 
>>>