我使用pprint
来打印大型嵌套dict
:
import pprint
import json
with open('config.json', 'r') as fp:
conf = fp.read()
pprint.pprint(json.loads(conf))
{u'cust1': {u'videotron': {u'temperature': u'3000K',
u'image_file': u'bloup.raw',
u'light_intensity': u'20',
u'size': [1920, 1080],
u'patches': [[94, 19, 247, 77],
[227, 77, 293, 232],
[77, 217, 230, 279],
[30, 66, 93, 211]]}},
u'cust2': {u'Rogers': {u'accuracy': True,
u'bleed': True,
u'patches': [[192,
126,
10,
80],
[318,
126,
10,
80], ...
第二级列表cust2.Rogers.patches
展开,而cust1.videotron.patches
则不展开。我希望不展开,即打印在同一行。有谁知道怎么做?
答案 0 :(得分:1)
您可以使用两个参数:width
和compact
(最后一个参数可能不适用于Python 2)。
width
- 限制水平空间。
以下是compact
的说明:
如果compact为false(默认值),则长序列中的每个项目将在单独的行上进行格式化。如果compact为true,则将在每个输出行上格式化适合宽度的项目。
但据我了解,您无法告诉pprint
有关数据结构以及您希望如何打印特定元素的信息。
答案 1 :(得分:1)
pprint模块中的PrettyPrinter接受各种参数来控制输出格式:
使用json module并indent
参数设置json.dumps本身有自己的pprint替代方法:
>>> print json.dumps(conf, indent=4)
{
"cust2": {
"Rogers": {
"patches": [
[
192,
126,
10,
80
],
...
第二级列表cust2.Rogers.patches展开,而cust1.videotron.patches则不展开。我希望两者都不要展开,即印在同一条线上。
上述任何一种工具都无法直接解决您指定的问题。要获得您想要的内容,您需要编写一些自定义的漂亮打印代码。