json 简单的Python方式来漂亮的打印请求,响应头

kmpatx3s  于 2023-06-25  发布在  Python
关注(0)|答案(1)|浏览(147)

我试图以完全Python的方式打印从Python Requests库返回的http响应,而不使用任何未内置到Python标准库中的包。我正在让JSON到处跑。

我尝试的内容:

我尝试使用json.loads()将response.headers加载到JSON字符串中,然后使用json.dumps()缩进输出,如下所示

import json
response_json = json.loads(response.headers)

pretty_response = json.dumps(response_json, indent=4)
print(pretty_response)

但我得到了以下错误:

TypeError                                 Traceback (most recent call last)
Cell In[21], line 2
      1 import json
----> 2 response_json = json.loads(response.headers)
      4 pretty_response = json.dumps(response_json, indent=4)
      5 print(pretty_response)

File c:\ProgramData\Anaconda3\envs\webscrapers\lib\json\__init__.py:341, in loads(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    339 else:
    340     if not isinstance(s, (bytes, bytearray)):
--> 341         raise TypeError(f'the JSON object must be str, bytes or bytearray, '
    342                         f'not {s.__class__.__name__}')
    343     s = s.decode(detect_encoding(s), 'surrogatepass')
    345 if "encoding" in kw:

TypeError: the JSON object must be str, bytes or bytearray, not CaseInsensitiveDict

我也试过:

首先安装并导入rich软件包,然后使用rich软件包中的模块将Rich Text Format输出到终端。print_json()函数应该漂亮地打印json:

import json
import rich
rich.print_json(dict(response.headers))

但我得到了一个错误:

TypeError: json must be str. Did you mean print_json(data={'Date': 'Sun, 18 Jun 2023 16:22:08 GMT', ...}

通过安装和导入rich包,并使用How to pretty print nested dictionaries?Requests: Pretty print http response headers中的一些提示,我终于让它工作了。

import rich
rich.pretty.pprint(dict(response.headers))

然而,我们花了一些时间才弄清楚正确的语法,因为Jupyter中的rich.pretty.pprint help()文档没有详细的例子。虽然rich是一个非常好的包,但它有一个显著的学习曲线。更重要的是,它不是原生Python内置解决方案。
如何简单地使用Python而不安装第三方包?

0s7z1bwu

0s7z1bwu1#

from pprint import pprint

pprint(dict(response.headers))

相关问题