Pythonのlistやdictを見やすく出力

Pythonで普通のprintよりもリストや辞書変数を見やすく出力してくれるpprintの紹介


自分は主にデバッグ用にしか使用しませんが、大きいリストや辞書変数をprintで出力すると一行にすべて出力され、非常に見にくくなります。例えば以下のコードで取得したjson形式のレスポンスを表示してみます。

import requests
resp = requests.get(
    'https://pypi.org/pypi/sampleproject/json')
print(resp.json())
{'name': 'WP REST API Demo', 'description': 'Just another WP API Demo Sites site', 'url': 'https://demo.wp-api.org', 'home': 'https://demo.wp-api.org', 'gmt_offset': '0', 'timezone_string': '', 'namespaces': ['oembed/1.0', 'workflows/v1', 'broker/v1', 'oauth2', 'wp/v2'], 'authentication': {'oauth1': {'request': 'https://demo.wp-api.org/oauth1/request', 'authorize': 'https://demo.wp-api.org/oauth1/authorize', 'access': 'https://demo.wp-api.org/oauth1/access', 'version': '0.1'}, 'oauth2': {'endpoints': {'authorization': 'https://demo.wp-api.org/wp-login.php?action=oauth2_authorize', 'token': 'https://demo.wp-api.org/wp-json/oauth2/access_token'}, 'grant_types': ['authorization_code', 'implicit']}, 'connect': {'version': 2, 'url': 'https://demo.wp-api.org/wp-login.php?action=oauth2_connect'}, 'broker': 'https://demo.wp-api.org/wp-json/broker/v1/connect'}, 'routes': {'/': {'namespace': '', 'methods': ['GET'], 'endpoints': [{'methods': ['GET'], 'args': {'context': {'required': False, 'default': 'view'}}}], '_links': {'self': 'https://demo.wp-api.org/wp-json/'}}, '/oembed/1.0': {'namespace': 'oembed/1.0', 'methods': ['GET'], 'endpoints': [{'methods': ['GET'], 'args': {'namespace': {'required': False, 'default': 'oembed/1.0'}, 'context': {'required': False, 'default': 'view'}}}], '_links': {'self': 'https://demo.wp-api.org/wp-json/oembed/1.0'}}, '/oembed/1.0/embed': {'namespace': 'oembed/1.0', 'methods': ['GET'], 'endpoints': [{'methods': ['GET'], 'args': {'url': {'required': True}, 'format': {'required': False, 'default': 'json'}, 'maxwidth': {'required': False, 'default': 600}}}], '_links': {'self': 'https://demo.wp-api.org/wp-json/oembed/1.0/embed'}}, '/oembed/1.0/proxy': {'namespace': 'oembed/1.0', 'methods': ['GET'], 'endpoints': [{'methods': ['GET'], 'args': {'url': {'required': True, 'description': 'The URL of the resource for which to fetch oEmbed data.', 'type': 
...

これがpprintを使用すると以下のように出力してくれます

import pprint
import requests
resp = requests.get(
    'https://demo.wp-api.org/wp-json')
pprint.pprint(resp.json())
{'_links': {'help': [{'href': 'http://v2.wp-api.org/'}]},
 'authentication': {'broker': 'https://demo.wp-api.org/wp-json/broker/v1/connect',
                    'connect': {'url': 'https://demo.wp-api.org/wp-login.php?action=oauth2_connect',
                                'version': 2},
                    'oauth1': {'access': 'https://demo.wp-api.org/oauth1/access',
                               'authorize': 'https://demo.wp-api.org/oauth1/authorize',
                               'request': 'https://demo.wp-api.org/oauth1/request',
                               'version': '0.1'},
                    'oauth2': {'endpoints': {'authorization': 'https://demo.wp-api.org/wp-login.php?action=oauth2_authorize',
                                             'token': 'https://demo.wp-api.org/wp-json/oauth2/access_token'},
                               'grant_types': ['authorization_code',
                                               'implicit']}},
 'description': 'Just another WP API Demo Sites site',
 'gmt_offset': '0',
 'home': 'https://demo.wp-api.org',
 'name': 'WP REST API Demo',
 'namespaces': ['oembed/1.0', 'workflows/v1', 'broker/v1', 'oauth2', 'wp/v2'],

...

だいぶ見やすくなりました。出力する一行の文字数はwidth引数で変更することが出来ます。(デフォルトは80) (例: pprint.pprint(resp.json(), width=60))

おすすめ