如何强制pprint每行打印一个列表/元组/字典元素?

12

我该如何强制pprint()每行打印一个列表/元组/字典元素?

>>> from pprint import pprint
>>> my_var = ['one', 'two', ('red','green'), {'state' : 'Oregon', 'city' : 'Portland'}]
>>> pprint(my_var)
['one', 'two', ('red', 'green'), {'city': 'Portland', 'state': 'Oregon'}]

我希望输出结果类似于:

['one',
 'two',
 ('red',
  'green'),
 {'city': 'Portland',
  'state': 'Oregon'}]
2个回答

11
使用width=1参数来调用pprint()函数:
>>> from pprint import pprint
>>> my_var = ['one', 'two', ('red','green'), {'state' : 'Oregon', 'city' : 'Portland'}]
>>> pprint(my_var, width=1)
['one',
 'two',
 ('red',
  'green'),
 {'city': 'Portland',
  'state': 'Oregon'}]
>>>

"pprint - 数据漂亮打印机" 文档


这对于相对平坦的对象效果很好,但对于深度嵌套的对象,它不会每行输出一个对象,而我想在每个左括号后实现换行。例如,尝试 pprint {u'a': {u'b': {u'c': {u'd': {u'foo': 1, u'bar': 2}}}}} - Taylor D. Edmiston
3
@TaylorEdmiston 如果你的字典可以被JSON编码,那么实现这个目标的一个快速方法是使用:print(json.dumps(mydict, indent=2)) - pnd
谢谢!这让我看到了所有pprint选项...我正在生成一些带有非常大的嵌套字典的Python代码,并且我想要能够打印漂亮的长行,但是将它们包装在不会使我的IDE(Eclipse)崩溃的宽度上。我使用了width=4000和compact=true。当然,我希望Eclipse的编辑器能够处理长行... - Neal Gokli

0

我使用:

print(json.dumps(mydict, 
         indent=2).replace('true','True').replace('false','False'))

否则,JSON会将布尔值转换为小写。当然,如果这些关键字是其他字符串的一部分,它就无法正常工作!那么可以使用正则表达式替换。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接