出力結果を整型して見やすくしたい!
そんな時は、pprintです。
そのpprintの使い方を説明します。
まずは、fromとimportでパッケージをインポートしましょう。
from pprint import pprint
pprintとprintの違い
サンプルとして、このリスト”a”を使用します。
a = [{'one': 1, 'two': 2, 'three': 3},
{'four': 4, 'five': 5, 'six': 6},
{'sevennine': [7, 8, 9]}]
このリスト”a”を「print」と「pprint」で出力します。
print(a)
>[{'one': 1, 'two': 2, 'three': 3}, {'four': 4, 'five': 5, 'six': 6}, {'sevennine': [7, 8, 9]}]
pprint(a)
>[{'one': 1, 'three': 3, 'two': 2},
{'five': 5, 'four': 4, 'six': 6},
{'sevennine': [7, 8, 9]}]
「print」では、改行なしの一列で出力されます。
「pprint」では、見やすいように整形されて出力されます。
pprintのパラメータ
width (default = 80)
pprintのパラメータの一つ、”width”は1行に書く文字数。
pprint(a, width=80)
>[{'one': 1, 'three': 3, 'two': 2},
{'five': 5, 'four': 4, 'six': 6},
{'sevennine': [7, 8, 9]}]
pprint(a, width=10)
>[{'one': 1,
'three': 3,
'two': 2},
{'five': 5,
'four': 4,
'six': 6},
{'sevennine': [7,
8,
9]}]
indent (default = 1)
インデント幅を指定できます。
pprint(a, indent = 1)
>[{'one': 1, 'three': 3, 'two': 2},
{'five': 5, 'four': 4, 'six': 6},
{'sevennine': [7, 8, 9]}]
pprint(a, indent = 3)
>[ {'one': 1, 'three': 3, 'two': 2},
{'five': 5, 'four': 4, 'six': 6},
{'sevennine': [7, 8, 9]}]
depth (default = None)
depthは要素の深さを指定できます。
指定された深さよりも奥になる要素は[…]や{…}として省略されます。
デフォルトではNoneですべてを出力します。
pprint(a ,depth=None)
>[{'one': 1, 'three': 3, 'two': 2},
{'five': 5, 'four': 4, 'six': 6},
{'sevennine': [7, 8, 9]}]
pprint(a ,depth=2)
>[{'one': 1, 'three': 3, 'two': 2},
{'five': 5, 'four': 4, 'six': 6},
{'sevennine': [...]}]
stream (default = None)
streamは整型データの出力先ファイルを設定します。
デフォルトではNoneで設定されていません。
with open('./pprint.txt','w') as f:
pprint(a ,stream=f)
[{'one': 1, 'three': 3, 'two': 2},
{'five': 5, 'four': 4, 'six': 6},
{'sevennine': [7, 8, 9]}]
compact (default = False)
もし、表示したい要素の文字数がwidthの指定文字数に収まらない場合
compactがFalseだと
要素を一つずつ改行して表示します。
compactがTrueだと
widthの指定文字数に収まらなかった部分のみを改行します。
b = [[1, 2, 3, 4, 5],[100, 200, 300, 400,500]]
pprint(b ,width=20, compact=False)
>[[1, 2, 3, 4, 5],
[100,
200,
300,
400,
500]]
pprint(b ,width=20, compact=True)
>[[1, 2, 3, 4, 5],
[100, 200, 300,
400, 500]]
sort_dicts (default = True)
PythonのVer3.8以降に追加されました。
sort_dictsがTrueの場合、出力するデータが辞書型だと
キーの順序をソートします。
Falseの場合は、入力された順序で出力します。
c = {1: 10, 9: 90, 2: 20, 8: 80, 3: 30}
pprint.pprint(c, sort_dicts=True)
>{1: 10, 2: 20, 3: 30, 8: 80, 9: 90}
pprint.pprint(c, sort_dicts=False)
>{1: 10, 9: 90, 2: 20, 8: 80, 3: 30}
pprintの使い所
JSONの出力
pprintの使い所といえば、まずJSON形式データの出力でしょうか。
JSONはAPIなどの通信によく使われる形式です。
通信できたデータを確認するためには
‘print’ と ‘pprint’ では見やすさが変わり
処理の考え方がすっきりとします。
d=[{"person1":{"id":"1", "name":"taro"}},{"person2":{"id":"2","name":"jiro"}}] #JSON
print(d)
>[{'person1': {'id': '1', 'name': 'taro'}}, {'person2': {'id': '2', 'name': 'jiro'}}]
pprint(d)
>[{'person1': {'id': '1', 'name': 'taro'}},
{'person2': {'id': '2', 'name': 'jiro'}}]
最後に
以上でpprintの使い方を終了します。
JSON形式のデータの処理が知りたい!という方には
こちらの「pythonでのJSONの処理と特定の値の取り方」の記事を見てみてください。

よりpythonの知識を深めたい方には
こちらの書籍をお勧めします。私も参考にしています。