pprintについて
pprintはPythonの組み込みモジュールです。
リストや辞書、タプルなどの各要素をきれいに表示することができます。
pprintの使い方
リストをpprintで表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
from pprint import pprint data = ["spam","apple","coffee","egg","orange","meat","grape","milk","banana","peach","tea"] #pprintを使えば適切に改行を入れてきれいに表示する pprint(data) #['spam', #'apple', #'coffee', #'egg', #'orange', #'meat', #'grape', #'milk', #'banana', #'peach', #'tea'] #普通にprint関数を使うと限界まで1行で表示して、中途半端な場所で折り返す print(data) #['spam', 'apple', 'coffee', 'egg', 'orange', # 'meat', 'grape', 'milk', 'banana', 'peach', 'tea'] |
print関数を使った場合、一定以上の幅を越えると途中で折り返して表示されます。
一方で、pprintモジュールのpprintメソッドを使うと、出力時に予め定められた幅を越える場合、要素ごとに改行して出力します。1つの要素が長い場合や、要素数が多い場合などに使うと見やすくなります。
streamでテキストファイルに出力する
streamの引数にopen関数を利用してテキストファイルに出力するよう指示します。
1 2 3 4 5 6 |
from pprint imoprt pprint data = ["spam","apple","coffee","egg","orange","meat","grape","milk","banana","peach","tea"] #出力先をコマンドプロンプトではなくテキストファイルに指定 pprint(data, stream = f.open("text.txt","w")) #出力先をコマンドプロンプトではなくExcelファイルに指定 pprint(data, stream = f.open("text.xlsx","w")) |
“f.open(“text.txt”,”w”)”は書き込みモードでファイルを開きます。(新規作成)
これ自体がstreamへ渡される引数となり、きれいに整形されたdataの各要素はコマンドプロンプトではなくテキストファイルに書き出されます。
内部的にはsys.stdoutので指定されている出力先を変更しています。
indentで出力時のインデントを設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from pprint import pprint data = ["spam","apple","coffee","egg","orange","meat","grape","milk","banana","peach","tea"] #出力時のインデントを4に指定 pprint(data, indent=4) [ 'spam', 'apple', 'coffee', 'egg', 'orange', 'meat', 'grape', 'milk', 'banana', 'peach', 'tea'] |
“indent=4″としたので、pprintでの出力後、各要素が4つ分のスペースの後に表示されました。
compactで改行を減らす
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
from pprint import pprint data = ["spam","apple","coffee","egg","orange","meat","grape","milk","banana","peach","tea"] pprint(data, compact=True) #compact=Trueとすると、ある程度までは1行に収めてくれる。 #['spam', 'apple', 'coffee', 'egg', 'orange', 'meat', 'grape', 'milk', 'banana', #'peach', 'tea'] #compact=Falseはデフォルト設定。この場合は要素ごとに改行されることがある pprint(data) #['spam', #'apple', #'coffee', #'egg', #'orange', #'meat', #'grape', #'milk', #'banana', #'peach', #'tea'] |
compactをTrueにすると、ある程度までは改行せずに1行に表示してくれます。
1つ1つの要素がランダムな長さだった場合、余分に改行が多くなるのを防ぎます。
要素が多すぎる場合は役立ちます。
pprintの初期設定
pprintにはいくつかの引数があります。
いくつかは既に使い方を記載していますが、それぞれ記載しておきます。
1 |
pprint(object, stream=None, indent=1, width=80, depth=None, compact=False, sort_dicts=True) |
object
リストや辞書など、きれいに出力したいデータです。
stream
出力先を指定することができます。通常は標準出力ですが、指定することでファイルに書き出すことができます。
indent
pprintで出力時、行頭からのインデントを1文字幅で指定できます。
width
1行に何文字含むかを指定できます。
デフォルトでは80文字です。
depth
リストや辞書の何層目までを表示し、何層目以降を省略するかを指定できます。
compact
改行の数を減らして出力します。
ある程度の幅まで要素を出力した後で改行するので、最終的な出力時の行数を減らします。
sort_dicts
辞書をきれいに出力するとき、キーを軸にソートします。
デフォルトでTrueとなっているので、自動でソートした後で出力します。
まとめ
今回はpprintできれいに表示する方法について確認しました。
↓知っておくと役に立つことをまとめています。
コメント