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