我知道如何使用空格转储JSON字符串。这是我目前使用的命令来格式化和转储JSON字符串:
json.dump(data, open('dev_integrated.json', 'w'), sort_keys=True, indent=4, separators=(',', ': '))
我想知道是否有一种方法可以指定1个制表符的缩进,而不是4个空格。我无法在文档中找到任何相关的信息。
谢谢。
我知道如何使用空格转储JSON字符串。这是我目前使用的命令来格式化和转储JSON字符串:
json.dump(data, open('dev_integrated.json', 'w'), sort_keys=True, indent=4, separators=(',', ': '))
我想知道是否有一种方法可以指定1个制表符的缩进,而不是4个空格。我无法在文档中找到任何相关的信息。
谢谢。
有一种使用正则表达式可以实现的解决方法:
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')
来自文档:
如果缩进是一个非负整数或字符串,则JSON数组元素和对象成员将使用该缩进级别进行漂亮打印。 缩进级别为0,负数或“”仅插入换行符。 None(默认值)选择最紧凑的表示形式。 如果缩进是正整数,则每个级别都缩进那么多个空格。 如果缩进是字符串(例如“\t”),则使用该字符串缩进每个级别。
因此,可以按照以下方式实现TAB缩进:
json.dump(jString, open('dev_integrated.json', 'w'), sort_keys=True, indent='\t', separators=(',', ': '))
print >> open('dev_integrated.json', 'w'), new_data
,否则它会保留字符转储。但这已经足够好了。谢谢。 - cs95
simplejson
,它在json
模块提供的功能上还有一些不错的特性。另一个选项是复制更改并创建自定义类。 - Ashwini Chaudhary