Pythonのpprintモジュールとは
auです。
Pythonのことを調べていると、「pprint」というモジュールを見かけます。
普通の「print」の違いを知りたくて調べてみました。
pprintモジュールとは
pprintとは、「prentty-print」の略称みたいです。
綺麗に出力するという意味っぽいですね。
その意味の通り、list型やdict型のオブジェクトを綺麗に表示したり、str型に変換する機能があります。
pprintモジュールをimportして使います。
import pprint # importが必要 list_obj = [{"name": "au", "age": 21, "points": [10, 20, 30]}, {"name": "docomo", "age": 40}, {"name": "softbank", "age": 40}] print(list_obj) pprint.pprint(list_obj) # 実行結果 普通のprint: [{'name': 'au', 'age': 21, 'points': [10, 20, 30]}, {'name': 'docomo', 'age': 40}, {'name': 'softbank', 'age': 40}] [{'age': 21, 'name': 'au', 'points': [10, 20, 30]}, {'age': 40, 'name': 'docomo'}, {'age': 40, 'name': 'softbank'}]
一列ではなく、整形された状態で出力されています。
widthで1行に表示される分量、depthで深さを知ることができるのですが、使い方は参考を読めば分かりました。
それよりも「どこから改行されるのか、...表示になるのか」を確認してみようと思います。
widthの改行はどこから?
iimport pprint # importが必要 list_obj = {"name": "docomo", "age": 40} docomo_dict = '{"name": "docomo", "age": 40}' print("docomoの長さ: ", len(docomo_dict), '\n') print("width=29") pprint.pprint(list_obj, width=29) print("width=28") pprint.pprint(list_obj, width=28) # 実行結果 docomoの長さ: 29 width=29 {'age': 40, 'name': 'docomo'} width=28 {'age': 40, 'name': 'docomo'}
dokomoが改行されたのは、"width=28"でした。文字列の長さが29なので、{}や半角スペースなども含めた完全なる1行の長さでした。複数オブジェクトを扱う際に「,」が含まれると思いますが、これも含まれます。
widthは1から数えているみたいですね。
depthの「...」表記はどこから?
import pprint # importが必要 # リストのリストの辞書型という構造 list_obj = [[{"name": "au", "age": 21, "points": [10, 20, 30]}]] print("depth: ", 2, "\n") pprint.pprint(list_obj, width=20, depth=2) print("depth: ", 3) pprint.pprint(list_obj, width=20, depth=3) # 実行結果 depth: 2 [[{...}]] depth: 3 [[{'age': 21, 'name': 'au', 'points': [10, 20, 30]}]]
リストの(深さ+1)リストの(深さ+1)辞書(深さ+1)という構造を用意しました。
depth=2で「...」が表示されたので、深さも1から数えているみたいですね。