Q1入れ子の辞書を構造を保ったまま改行・字下げして表示したいときに使うのはどれですか?
pprint — 入れ子の dict と list を読みやすく表示する
printが1行に詰め込む入れ子のdict/listを、pprint.ppで改行・字下げして表示し、pformatで整形済み文字列をlogに渡す方法を、注文データと設定データで実行します。
デバッグでprintを使うと、入れ子の辞書やリストが 1 行に詰め込まれて改行されず読みにくくなることがよくあります。pprint(pretty-print)モジュールは、ネスト構造を字下げして改行付きで表示してくれる標準ライブラリで、デバッグや log 出力で重宝します。
pp と pformat — 表示する関数と文字列を返す関数
pprint には 2 つの主役があります。pprint.pp(値)は整形して標準出力に直接表示する関数で、戻り値はNoneです。一方のpprint.pformat(値)は整形後の文字列を返す関数で、画面には何も出ません。
| 関数 | 用途 | 戻り値 |
|---|---|---|
| pprint.pp(値) | 整形して標準出力に表示 | None(直接 print) |
| pprint.pformat(値) | 整形後の文字列を返す | 整形済み文字列 |
| indent=N | 字下げの幅を指定(既定 1) | — |
| width=N | 1 行の最大幅を指定(既定 80) | — |
| sort_dicts=False | 辞書のキー順を保ったまま表示(Python 3.8+) | — |
pprint.pp で構造を保って表示する
pprint.pp(値)とprint(値)は、シンプルな値ならどちらも同じように見えますが、入れ子の dict や listになると出力が異なります — printは 1 行に詰め込んでしまうのに対し、ppは構造の深さに応じて改行と字下げを入れて表示します。
コードを実行してください
pprint.pformat で整形済みの文字列を取り出す
pprint.pformat(値)は整形後の文字列を返すだけで、画面には何も出力しません。出力先を変えたい場面(log にまとめて渡す / 文字列の前後に他の情報をくっつけて print したい / エラーメッセージに埋めたい)でpformatを選びます。width=Nやindent=Nのオプションはppと同じように使えます。
コードを実行してください
QUIZ
理解度チェック
まずは1問ずつ答えてみましょう。
Q2pprint で文字列を取得して log 出力に渡したいときに使うのはどれですか?
Q3pprint.ppの表示幅を 40 文字に変えるにはどう書きますか?