【Python】オブジェクトの中身を見やすく表示する

python-logo Python

やりたいこと

requestsなどでAPIリクエストをした結果をprint関数で表示しようとすると
下記のように表示されてしまい、中身がよく分からない。

import requests

response = requests.get("https://jsonplaceholder.typicode.com/users/1")
print(response)


# 実行結果
<Response [200]>

「このオブジェクト、ざっくりどんな中身なんだろうな」ということを調べたい。

やり方

使うものは2つ。

  • pprintモジュール:表示するときにある程度整形してくれる
  • vars()関数:オブジェクトの中身まで詳細に表示する

pprintモジュールは標準搭載されいているので、pipやpipenvによるインストール作業は必要ない。

import requests
import pprint

response = requests.get("https://jsonplaceholder.typicode.com/users/1")
pprint.pprint(vars(response))


# 実行結果
{'_content': b'{\n  "id": 1,\n  "name": "Leanne Graham",\n  "username": "Bret"'
             b',\n  "email": "Sincere@april.biz",\n  "address": {\n    "street'
             b'": "Kulas Light",\n    "suite": "Apt. 556",\n    "city": "Gwen'
             b'borough",\n    "zipcode": "92998-3874",\n    "geo": {\n      "l'
             b'at": "-37.3159",\n      "lng": "81.1496"\n    }\n  },\n  "phone"'
             b': "1-770-736-8031 x56442",\n  "website": "hildegard.org",\n  "'
             b'company": {\n    "name": "Romaguera-Crona",\n    "catchPhrase"'
             b': "Multi-layered client-server neural-net",\n    "bs": "harne'
             b'ss real-time e-markets"\n  }\n}',
(省略)
 'history': [],
 'raw': <urllib3.response.HTTPResponse object at 0x10469afa0>,
 'reason': 'OK',
 'request': <PreparedRequest [GET]>,
 'status_code': 200,
 'url': 'https://jsonplaceholder.typicode.com/users/1'}

レスポンスオブジェクトの中身を表示することができた。

ちなみに、レスポンスデータそのものを表示したいときはresponse.textを利用すれば良い。

まとめ

  • pprintとvars()でサクッとデバッグしたいときはよくあるので、覚えておく
  • pprintモジュールは変数の中身を整形して表示するので、デバッグ時に活躍する
  • vars()関数は、どの階層まで詳細に出力するかも設定可能
タイトルとURLをコピーしました