39

我想使用 prettyprint 打印出字典,但打印成字符串而不是控制台。该字符串将被传递给其他函数。

我知道我可以使用“stream”参数来指定文件而不是 sys.out,但我想要一个字符串。

我怎么做?

4

3 回答 3

102

您应该简单地从 pprint 模块调用 pformat 函数:

import pprint
s = pprint.pformat(aDict)
于 2013-02-26T09:17:43.167 回答
9

我有时会json为此使用该模块:

In [1]: import json

In [2]: d = {'a':1, 'b':2, 'c':{'a':1}}

In [3]: s = json.dumps(d, indent=4)

In [4]: s
Out[4]: '{\n    "a": 1, \n    "c": {\n        "a": 1\n    }, \n    "b": 2\n}'

In [5]: print s
{
    "a": 1, 
    "c": {
        "a": 1
    }, 
    "b": 2
}
于 2013-02-26T09:25:45.237 回答
0

只需使用StringIO模块

import StringIO

output = StringIO.StringIO()

现在您可以output作为流传递给prettyprint.

于 2013-02-26T09:12:11.740 回答