pprintの基本の使い方

list型やdict型を綺麗に表示させよう

進導エイリ
進導エイリ

今回の記事では、以前 Pythonの便利なライブラリ3選 の記事で紹介した「pprint」についてもう少し詳しくご紹介します。ぜひ使ってみてくださいね。

datetimeとは?

pprintは、Pythonに最初から用意されている標準ライブラリの1つです。
通常のprint()では綺麗に出力することが難しい、list型やdict型などのオブジェクトを整形して出力・表示することができます。また、list型・dict型を文字列に変換することもできます

  実際に使ってみよう

pprintをインポートします。

import pprint

次のようなデータがあるとします。

data = [{'Name': 'Tarou', 'Age': 30, 'Mail': 'tarou@example.com'},
       {'Name': 'Hanako', 'Age': 30, 'Mail': 'hanako@example.com'},
       {'Name': 'Ichirou', 'Age': 35, 'Mail': 'ichirou@example.com'}]

通常のprint()で出力すると次のように1行で表示されてしまい、非常に見づらいです。

print(data)

#  [{'Name': 'Tarou', 'Age': 30, 'Mail': 'tarou@example.com'}, {'Name': 'Hanako', 'Age': 30, 'Mail': 'hanako@example.com'}, {'Name': 'Ichirou', 'Age': 35, 'Mail': 'ichirou@example.com'}]

これをpprint()で出力すると、リストの要素ごとに改行してくれるので見やすくなります。

pprint.pprint(data)

#  [{'Name': 'Tarou', 'Age': 30, 'Mail': 'tarou@example.com'},
#   {'Name': 'Hanako', 'Age': 30, 'Mail': 'hanako@example.com'},
#   {'Name': 'Ichirou', 'Age': 35, 'Mail': 'ichirou@example.com'}]

出力の幅や深さを指定する

pprintでは、出力の幅や深さを指定することができます。出力幅はwidth、深さはdepthで指定します。

幅を指定

出力幅に指定した文字数が1行に収まるよう、リストや辞書の要素で自動改行します。

pprint.pprint(data, width=40)
#  [{'Name': 'Tarou', 
#    'Age': 30, 
#    'Mail': 'tarou@example.com'},
#   {'Name': 'Hanako', 
#    'Age': 30, 
#    'Mail': 'hanako@example.com'},
#   {'Name': 'Ichirou', 
#    'Age': 35, 
#    'Mail': 'ichirou@example.com'}]

深さを指定

深さとは、入れ子になったデータの深さのことを指します。指定した値よりも深い要素は、省略記号「…」で出力されます

pprint.pprint(data, depth=2)
#  [{'Name': 'Tarou', 'Age': 30, 'Mail':  […]},
#   {'Name': 'Hanako', 'Age': 30, 'Mail':  […]},
#   {'Name': 'Ichirou', 'Age': 35, 'Mail':  […]}]

その他のオプション

深さや幅の他に、pprintには様々なオプションがあります。

引数名説明
indent出力するときのインデントを指定。(デフォルト値=1)
compactTrueにすると、widthで指定した幅に収まる多くの要素を1行で出力する。(デフォルト値=False)
sort_dictsデフォルトはTrueで、辞書型を出力する際にキーで自動ソートされる。Falseにすると、元データのまま出力する。

整形したデータを文字列として取得する

pprint.pformat()関数を使って、整形したデータを文字列として取得することができます。指定できる引数は下記の通りです。
・width
・depth
・indent
・compact
・sort_dicts

formatted = pprint.pformat(data)
print(formatted)
# [{'Age': 30, 'Mail': 'tarou@example.com', 'Name': 'Tarou'},
#  {'Age': 30, 'Mail': 'hanako@example.com', 'Name': 'Hanako'},
#  {'Age': 35, 'Mail': 'ichirou@example.com', 'Name': 'Ichirou'}]

print(type(formatted))
# <class 'str'>

pprintの紹介は以上です。ぜひ活用してみてくださいね。

講師
講師

Startlabのプログラミング入門コースは、Python未経験者・初学者にもわかりやすいカリキュラムと続けやすいサポート体制が魅力。自分の学習目的に合っているか、どういった知識を身に付けることができるのかなど、無料カウンセリングでぜひご相談ください!カウンセリングは毎日実施中、お待ちしております!

無料カウンセリングを予約する