复制IPython的结果打印

时间:2014-07-16 07:51:43

标签: python ipython pretty-print

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]}}

2 个答案:

答案 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