我正在将一个json文件写入键值属性文件:
Json示例:
{
"id":"0",
"meta":"down",
"type":"1",
"direction":"0",
"interval":"1800"
}
并且需要像下面那样编写文件(需要匹配缩进):
id = 0
meta = down
type = 1
direction = 0
interval = 1800
现在,在转储json之后,我正在替换文本,这很好。但我无法得到适当的缩进。以下是我的代码和输出:
def updateConfigFile(filename):
with open(filename, 'U') as f:
newText=f.read()
while ':' in newText:
newText=newText.replace(':', ' = ')
while ',' in newText:
newText=newText.replace(',', ' ')
with open(filename, "w") as f:
f.write(newText)
输出:
direction = 0
stallTimeout = 60
description = down
rampTime = 4
deepDepth = 14
deepWindow = 5
id = 1
如何实现适当的缩进?感谢
答案 0 :(得分:1)
您应该将JSON处理为JSON,而不是原始文本。特别是,您不应该依赖JSON文件的某些特殊格式。
从此以后,我假设这是你的json文件的内容:
{"id":"0", "meta": "down", "type": "1", "direction": "0", "interval":"1800"}
保存在exampleJson.json
下。
您可以将json转换为格式正确的字符串,如下所示:
import json
def configFileToString(filename):
with open(filename, 'r') as f:
j = json.load(f)
return "\n".join(["%-20s= %s" % (k, j[k]) for k in j])
print(configFileToString("exampleJson.json"))
它产生以下字符串:
id = 0
meta = down
type = 1
direction = 0
interval = 1800
关键部分是"%-20s= %s"
- 格式字符串。 %-20s
表示:填充宽度为20,左对齐。
我希望将此字符串保存到文件应该不是问题。