【问题标题】:Is there a pretty printer for python data?python数据有漂亮的打印机吗?
【发布时间】:2008-09-18 11:43:45
【问题描述】:

以交互方式使用 python,有时需要显示一个任意复杂数据结构的结果(如带有嵌入列表的列表等) 显示它们的默认方式只是一个巨大的线性转储,它只是一遍又一遍地包裹,你必须仔细解析才能阅读它。

有没有什么东西可以获取任何 python 对象并以更合理的方式显示它。例如

[0, 1,
    [a, b, c],
    2, 3, 4]

代替:

[0, 1, [a, b, c], 2, 3, 4]

我知道这不是一个很好的例子,但我想你明白了。

【问题讨论】:

    标签: python prettify


    【解决方案1】:
    from pprint import pprint
    a = [0, 1, ['a', 'b', 'c'], 2, 3, 4]
    pprint(a)
    

    请注意,对于像我的示例这样的简短列表,pprint 实际上会将其全部打印在一行上。但是,对于更复杂的结构,它可以很好地打印数据。

    【讨论】:

      【解决方案2】:

      有时YAML 可以很好地解决这个问题。

      import yaml
      a = [0, 1, ['a', 'b', 'c'], 2, 3, 4]
      print yaml.dump(a)
      

      生产:

      - 0
      - 1
      - [a, b, c]
      - 2
      - 3
      - 4
      

      【讨论】:

        【解决方案3】:

        除了pprint.pprintpprint.pformat 对于使__repr__s 可读性非常有用。我的复杂__repr__s 通常是这样的:

        def __repr__(self):
            from pprint import pformat
        
            return "<ClassName %s>" % pformat({"attrs":self.attrs,
                                               "that_i":self.that_i,
                                               "care_about":self.care_about})
        

        【讨论】:

        • pprint(x) 只是“打印 pformat(x)”,因此您可以访问 pprint 打印为字符串的内容。有时很有帮助
        【解决方案4】:

        另一个不错的选择是使用IPython,这是一个具有许多额外功能的交互式环境,包括自动漂亮的打印、方法的制表符完成、简单的 shell 访问等等。它也很容易安装。

        IPython tutorial

        【讨论】:

        • 郑重声明,我相信IPython使用pprint来打印东西,所以如果你想在自己的程序中打印IPython之类的东西,你需要pprint。
        • 嗯,也可以在你的程序中导入一个 ipython shell。我指出 ipython 是因为它除了漂亮的打印之外还有许多其他有用的功能。
        猜你喜欢
        • 1970-01-01
        • 2021-06-22
        • 2011-07-02
        • 2012-03-07
        • 2014-05-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多