read.json文件:
{
"Username" : "admin",
"Password" : "admin",
"Iterations" : 5,
"Decimal" : 5.5,
"tags" : ["hello", "bye"],
"Value" : 5
}
program.py文件:
import json
with open('read.json') as data_file:
data = json.load(data_file)
data = str(data)
data.replace("'",'""',10)
f = open("write.json", "w")
f.write(data)
write.json文件:
{'Username': 'admin', 'Password': 'admin', 'Iterations': 5, 'Decimal': 5.5, 'tags': ["hello", "bye"], 'Value': 5}
我想要实现的目标:
我的代码中没有错误,但write.json不包含双引号中的值(""),而是包含在单引号中的值,使其不是正确的JSON格式。
需要做些什么更改才能使write.json文件包含正确的JSON格式,并且还要“写”'写入.json文件。
答案 0 :(得分:6)
您可以直接将json数据转储到文件中。 Docs
import json
with open('read.json', 'w') as outfile:
json.dump(data, outfile, sort_keys=True, indent=4)
# sort_keys, indent are optional and used for pretty-write
从文件中读取json:
with open('read.json') as data_file:
data = json.load(data_file)
答案 1 :(得分:4)
问题在于您正在使用python表示将字典转换为字符串,而python表示更喜欢简单的引号。
正如Vikash的回答所述,无需转换为字符串(您正在丢失结构)。更改您的数据,然后让json.dump
处理dict到文本过程,这次遵循json格式,并使用双引号。
你的问题提到了“pretty”输出,你可以通过向json.dump
data["Username"] = "newuser" # change data
with open("write.json", "w") as f:
json.dump(data,f,indent=4,sort_keys=True)
现在文件内容是:
{
"Decimal": 5.5,
"Iterations": 5,
"Password": "admin",
"Username": "newuser",
"Value": 5,
"tags": [
"hello",
"bye"
]
}
indent
:选择缩进级别。具有“漂亮”输出的好效果sort_keys
:如果设置,键按字母顺序排序,每次保证相同的输出(python键顺序是随机的)