gpt4 book ai didi

python - 如何在 iPython 中漂亮地打印字典

转载 作者:行者123 更新时间:2023-11-28 17:24:15 24 4
gpt4 key购买 nike

我目前正在使用 RethinkDB,它有一个漂亮的 Web UI 和一个 Data Explorer,允许用户像这样打印出数据库的内容:

enter image description here

请注意,每个键值对都在一个新行开始,并且键和值(大部分)具有不同的颜色。相比之下,如果我使用 iPython 打印相同的内容,我会得到几乎难以辨认的结果:

enter image description here

如果我遍历光标并打印每个项目,这会稍微改善,如下所示:

enter image description here

然而,这需要更多的输入,而且看起来仍然不如 RethinkDB 网络用户界面好。是否有我可以安装的 iPython 插件来改善打印输出的外观?

(我看过 pprint ,但这似乎只控制文本的位置而不是它的颜色)。

最佳答案

你可以使用 json.dumps() :

import json 

for row in r.db(....).run(conn):
print(json.dumps(row, indent=4))

虽然这不会按排序顺序显示键(如示例中所示),但它可能足以满足您的需要。正如@coder 所指出的,您 json.dumps() 可以通过指定 sort_keys=True 参数对键进行排序。

for row in r.db(....).run(conn):
print(json.dumps(row, indent=4, sort_keys=True))

也可以直接打印对象(尚未测试):

print(json.dumps(r.db(....).run(conn), indent=4, sort_keys=True)

这也可能会打印出周围的“列表”对象。


要处理不支持序列化为 JSON 的对象,您可以使用自定义 JSONEncoder .下面是一个处理 datetime.datetime 对象的例子:

from datetime import datetime

class DateTimeAwareJSONEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
tz = obj.tzname()
return obj.ctime() + (' {}'.format(tz) if tz else '')
return super(DateTimeAwareJSONEncoder, self).default(obj)

for row in r.db(....).run(conn):
print(json.dumps(row, indent=4, sort_keys=True, cls=DateTimeAwareJSONEncoder))

您可以使用 datetime.strftime()根据需要格式化日期时间字符串。

关于python - 如何在 iPython 中漂亮地打印字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40018594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com