使用制表符缩进(不是空格)转储JSON

时间:2017-06-29 08:24:20

标签: python json python-2.7

我知道如何使用空格转储JSON字符串。这是我目前用来美化和转储JSON字符串的命令:

json.dump(data, open('dev_integrated.json', 'w'), sort_keys=True, indent=4, separators=(',', ': '))

我想知道是否有办法指定1个标签的缩进而不是4个空格。我无法在任何地方查看文档。

感谢。

1 个答案:

答案 0 :(得分:14)

对于python 2.7,有一种使用正则表达式的解决方法:

import re
dump = json.dumps(data, sort_keys=True, indent=4, separators=(',', ': '))
#Replaces spaces with tab
new_data = re.sub('\n +', lambda match: '\n' + '\t' * (len(match.group().strip('\n')) / 3), dump)
json.dump(new_data, open('dev_integrated.json', 'w')

这适用于Python 3.2 +

来自文档:

  

如果indent是非负整数或字符串,那么JSON数组元素和对象成员将使用该缩进级别进行漂亮打印。缩进级别0,负数或“”仅插入换行符。无(默认值)选择最紧凑的表示。使用正整数缩进缩进每个级别的许多空格。如果indent是一个字符串(例如“\ t”),则该字符串用于缩进每个级别。

json.dump(jString, open('dev_integrated.json', 'w'), sort_keys=True, indent='\t', separators=(',', ': '))