やりたいこと
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()
関数は、どの階層まで詳細に出力するかも設定可能