微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python PrettyPrinter 显示对象地址但不显示内容

如何解决Python PrettyPrinter 显示对象地址但不显示内容

我试图通过调用来漂亮地打印一个 python 对象:

from pprint import pprint
...
pprint(update)

但是输出看起来是这样的:

<telegram.update.Update object at 0xffff967e62b0>

但是,使用 Python 的内部 print() 我得到了正确的输出

{'update_id': 14191809,'message': {'message_id': 22222,'date': 11111,'chat': {'id': 00000,'type': 'private','username': 'xxxx','first_name': 'X','last_name': 'Y'},'text': '/start','entities': [{'type': 'bot_command','offset': 0,'length': 6}],'caption_entities': [],'photo': [],'new_chat_members': [],'new_chat_photo': [],'delete_chat_photo': False,'group_chat_created': False,'supergroup_chat_created': False,'channel_chat_created': False,'from': {'id': 01010101,'is_bot': False,'last_name': 'Y','language_code': 'en'}}}

有没有办法让pprint()正确显示对象数据并格式化?

解决方法

pprint 使用对象的表示(__repr__() 方法),而 print 使用 __str__()。您在 print 输出中看到的不是字典,而是 telegram.update.Update 实例内部结构的字符串表示。

对此没有通用的解决方案,但由于您的问题是关于特定库的,因此咨询 the relevant docs 表明存在 .to_json() 方法,因此您可以这样做:

import json
from pprint import pprint

...
pprint(json.loads(update.to_json()))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。