在IPython中显示结果时(不使用print()
),嵌套对象将获得易于查看的格式。有没有办法在Python中创建/复制一个具有与IPython相同的漂亮格式化功能的函数?我一直试图通过他们的代码查看可能导入的模块,但这似乎是一项不可能完成的任务。是否有可能自己写一个?
IPython示例:
In [1]: {'Mario': {'Stats': [63, 10, 69, 24, 82], 'Result': [(2, 7, 5, {'ids':
[46737432927499418861568L, 61421050754327147184128L, 46239274047769245908992L]})]},
'Luigi': {'Results': [(7, 9, 6, {'ids': [20471482889415933558784L,
87284089722223609249792L, 27117156251036496691200L]})], 'Stats': [14, 71, 93, 49, 53]}}
Out[1]:
{'Luigi': {'Results': [(7,
9,
6,
{'ids': [20471482889415933558784L,
87284089722223609249792L,
27117156251036496691200L]})],
'Stats': [14, 71, 93, 49, 53]},
'Mario': {'Result': [(2,
7,
5,
{'ids': [46737432927499418861568L,
61421050754327147184128L,
46239274047769245908992L]})],
'Stats': [63, 10, 69, 24, 82]}}
[编辑] 我知道pprint
模块,但它没有像IPython那样做缩进(我不想要子元素的缩进级别)依赖于他们的父母。)
pprint
输出:
{'Luigi': {'Results': [(7,
9,
6,
{'ids': [20471482889415933558784L,
87284089722223609249792L,
27117156251036496691200L]})],
'Stats': [14, 71, 93, 49, 53]},
'Mario': {'Result': [(2,
7,
5,
{'ids': [46737432927499418861568L,
61421050754327147184128L,
46239274047769245908992L]})],
'Stats': [63, 10, 69, 24, 82]}}
答案 0 :(得分:1)
尝试pprint模块。通常只需使用from pprint import pprint
,然后使用pprint()
代替print()
即可获得不错的结果;如果您阅读模块文档,也可以自定义其输出。
答案 1 :(得分:1)
IPython使用自己的格式化程序IPython.core.formatters.PlainTextFormatter
进行输出漂亮打印。如果要使用它,您需要安装IPython或复制IPython.lib.pretty
源。安装IPython后,您可以使用
from IPython.lib.pretty import pprint
pprint(your_big_ugly_data_structure)
如果要复制源,则为available on Github。看起来像其他IPython的唯一依赖项是微不足道的删除。记下license。