pprintの使い方と修正方法は?
Pythonでデータ構造を整形してキレイに表示しましょう
データの処理はPythonistaにとって重要ですが、時にはデータが見づらい場合もあります。コンピュータはフォーマットには興味がありませんが、見やすいフォーマットがなければ、人間は何かを読むのが難しくなるかもしれません。大きな辞書や長いリストにprint()
を使用すると、出力は効率的ですがキレイではありません。
Pythonのpprint
モジュールは、データ構造をキレイで読みやすい形式で出力するためのユーティリティモジュールです。APIリクエストや大きなJSONファイル、一般的なデータに対してデバッグするコードで特に便利な、標準ライブラリの一部です。
このチュートリアルの最後までには、以下のことができるようになります:
pprint
モジュールがなぜ必要かを理解する- **
pprint()
やPrettyPrinter
**を使い方 - パラメータについて学ぶ
- 独自の**
PrettyPrinter
**インスタンスを作成する - 出力をフォーマットされた文字列として保存する方法
- 再帰的なデータ構造の表示と認識
途中で、公共のAPIへのHTTPリクエストや、JSONの解析が実際に行われます。
無料ボーナス: ここをクリックしてPythonのチートシートを入手し、データ型、辞書、リスト、Pythonの関数などの基礎を学びましょう。
PythonのPretty Printの必要性を理解する
pprint
を探求する前に、urllib
を使用してデータを取得するためにHTTPリクエストを行います。実際のユーザー情報を持つ{JSON} Placeholderにリクエストを行います。最初に行うことは、HTTPのGET
リクエストを作成し、レスポンスを辞書として取得することです。
ここでは、基本的なGET
リクエストを作成し、json.loads()
を使ってレスポンスを辞書にパースしています。辞書が変数に格納されたので、一般的な次のステップはprint()
を使って内容を表示することです。
しかし、このままだと出力は改行を含んでいません。
それでは、キレイに表示するためにpprint
モジュールを使ってみましょう。
pprintモジュールの使い方
pprint
を使うと、データをキレイで見やすい形式で表示できます。pprint
モジュールは、pprint()
関数とPrettyPrinter
クラスの2つの主要なコンポーネントからなります。
まず、pprint()
関数から始めましょう。これは次のように使います:
これにより、辞書が次のようにキレイに表示されます:
これにより、辞書のキーと値がインデントされて表示され、データが見やすくなります。
pprint()
は多くのオプション引数を受け取ることができます。以下では、一部のオプション引数について見ていきます。
オプション引数の探索
データの要約: 深さ (depth)
pprint()
にはdepth
というオプション引数があります。これは、表示するデータの深さを制御するために使用されます。デフォルトではNone
に設定されており、すべての深さが表示されます。
例えば、データの深さを制限して表示する場合は次のようにします:
これにより、辞書の最初のレベルのキーと値のみが表示されます:
depth
は、辞書やリストの入れ子構造がどれだけ深く繰り返されるかを制御する際に便利です。
データの間隔: インデント (indent)
pprint()
のもう1つのオプション引数はindent
です。これにより、データを表示するときのインデントの量を制御できます。デフォルトでは、インデントの量は1
ですが、整数値を指定してインデントの量を変更することができます。
例えば、インデントの量を2に変更したい場合は次のようにします:
インデントを変更することで、データがより見やすくなります。
行の長さの制限: 幅 (width)
pprint()
のwidth
オプション引数は、表示される各行の長さを制限するために使用されます。デフォルトでは、制限はありませんが、整数値を指定して制限を設定することができます。
行が指定された長さを超えないようになります。
その他のオプション引数
pprint()
には他にもいくつかのオプション引数があります。以下ではそれらを見ていきます。
データのシーケンスの圧縮: compact
compact
オプションは、リストや文字列のようなシーケンスの表示方法を制御するために使用されます。デフォルトでは、compact
はFalse
に設定されており、改行を含むようになりますが、True
に設定すると改行を含まないようになります。
この設定により、シーケンスがより短い形式で表示されます。
出力の制御: stream
stream
オプション引数は、出力先を指定するために使用されます。デフォルトでは、出力は標準出力に送信されますが、適切なファイルオブジェクトを指定することもできます。
このようにして、出力はoutput.txt
というファイルに保存されます。
辞書のソートの抑制: sort_dicts
sort_dicts
オプションは、辞書の出力時のキーのソートを制御するために使用されます。デフォルトでは、キーはソートされますが、False
に設定するとソートされません。
この設定では、キーはソートされずに表示されます。
数値のキレイ化: underscore_numbers
underscore_numbers
オプションは、数値の表示方法を制御するために使用されます。デフォルトでは、数値は変更されませんが、True
に設定すると、数値の中にアンダースコアが表示されます。
この設定により、数値がよりわかりやすく表示されます。
PrettyPrinterオブジェクトの作成
PrettyPrinter
クラスを使用してpprint
のオプションをカスタマイズすることもできます。PrettyPrinter
クラスは、pprint()
関数と同様の動作をしますが、オプション引数を直接指定することができます。例えば、インデントを2に設定する場合は次のようにします。
PrettyPrinter
を使用すると、異なるオプションを異なるオブジェクトで使用することができます。
pformat()を使用してキレイな文字列を取得する
pprint
ではなく、キレイな文字列を取得したい場合は、pformat()
関数を使用できます。これにより、文字列に整形されたデータが含まれます。例えば、次のようにします。
文字列にデータを整形することで、出力をキレイに表示する上でより柔軟性が得られます。
再帰的なデータ構造の取り扱い
pprint
は再帰的なデータ構造に対しても対応しています。再帰的なデータ構造は、自己参照の構造を持つデータを指します。例えば、次のようなデータ構造があります。
このようなデータ構造をpprint()
で表示すると、再帰的に展開されて表示されます。
このようにすることで、再帰的なデータ構造の表示も容易になります。
まとめ
Pythonのpprint
モジュールを使用すると、データの整形や表示を効果的に行うことができます。このモジュールを使用することで、APIリクエストや大規模なデータ構造のデバッグなど、さまざまなシナリオでデータを見やすく表示することができます。
このチュートリアルでは、pprint()
関数やPrettyPrinter
クラスの使い方、オプション引数について学びました。さらに、pformat()
関数を使用してフォーマットされた文字列を取得する方法や、再帰的なデータ構造の取り扱いについても説明しました。
データの整形や表示をキレイに行うために、pprint
モジュールを活用してください。