我试图以完全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而不安装第三方包?
1条答案
按热度按时间0s7z1bwu1#