为了账号安全,请及时绑定邮箱和手机立即绑定

使用JSON模块进行漂亮打印时,如何实现自定义缩进?

使用JSON模块进行漂亮打印时,如何实现自定义缩进?

青春有我 2019-12-04 10:36:43
因此,我使用的是Python 2.7,使用该json模块对以下数据结构进行编码:'layer1': {    'layer2': {        'layer3_1': [ long_list_of_stuff ],        'layer3_2': 'string'    }}我的问题是我正在使用漂亮的打印来打印所有内容,如下所示:json.dumps(data_structure, indent=2)太好了,除了我要缩进的全部内容(内容除外)外,"layer3_1"这是一个庞大的字典,列出了坐标,因此,每一个上设置一个值都可以使漂亮的打印创建具有数千行的文件,并带有示例如下:{  "layer1": {    "layer2": {      "layer3_1": [        {          "x": 1,          "y": 7        },        {          "x": 0,          "y": 4        },        {          "x": 5,          "y": 3        },        {          "x": 6,          "y": 9        }      ],      "layer3_2": "string"    }  }}我真正想要的是类似于以下内容的东西:{  "layer1": {    "layer2": {      "layer3_1": [{"x":1,"y":7},{"x":0,"y":4},{"x":5,"y":3},{"x":6,"y":9}],      "layer3_2": "string"    }  }}我听说可以扩展该json模块:是否可以将其设置为仅在"layer3_1"对象内部时关闭缩进?如果是这样,有人可以告诉我如何吗?
查看完整描述

3 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

这是一个台阶,但是一旦您确定dumps()的内容的格式,就可以对它执行正则表达式替换,一旦您从dumps()获得了字符串即可。类似于以下内容:


s = json.dumps(data_structure, indent=2)

s = re.sub('\s*{\s*"(.)": (\d+),\s*"(.)": (\d+)\s*}(,?)\s*', r'{"\1":\2,"\3":\4}\5', s)


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 802 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信