python - 如何替换 JSON 文件中的值?
问题描述
我想做的是:
with open ('gw.json') as json_file:
data = json.load(json_file)
new_gw = {
'gw_id': f"{react.id}",
'gw_prize': prize,
'gw_status': "ongoing"
}
data.append(new_gw)
with open('gw.json', 'w') as j:
json.dump(data, j, indent=4)
#some other stuff
#when completed
with open ('gw.json', 'r') as jsonFile:
data = json.load(jsonFile)
for x in data:
if x['gw_id'] == f"{msgid}":
x['gw_status'] = x['gw_status'].replace('ongoing', x['completed']) #change the value of 'gw_status' when completed
with open ('gw.json', 'w') as jsonFile:
json.dump(data, jsonFile)
我想做的是
[
{
"gw_id": "id",
"gw_prize": "prize",
"gw_status": "ongoing"
}
{
"gw_id": "904905768149590086",
"gw_prize": "tdd",
"gw_status": "ongoing" <== this one to be changed to "completed"
}
]
但我写的代码不起作用。
解决方案
代替
x['gw_status'] = x['gw_status'].replace('ongoing', x['completed'])
和
x['gw_status'] = 'completed'
更改此代码后,您的代码将如下所示
with open ('gw.json') as json_file:
data = json.load(json_file)
new_gw = {
'gw_id': f"{react_id}",
'gw_prize': prize,
'gw_status': "ongoing"
}
data.append(new_gw)
with open('gw.json', 'w') as j:
json.dump(data, j, indent=4)
#some other stuff
#when completed
with open ('gw.json', 'r') as jsonFile:
data = json.load(jsonFile)
for x in data:
if x['gw_id'] == f"{msgid}":
x['gw_status'] = 'completed' #change the value of 'gw_status' when completed
with open ('gw.json', 'w') as jsonFile:
json.dump(data, jsonFile)
运行代码之前的gw.json文件
[
{ "gw_id": "id",
"gw_prize": "prize",
"gw_status": "ongoing"
}
]
运行代码后的gw.json文件
[
{ "gw_id": "id",
"gw_prize": "prize",
"gw_status": "ongoing"
},
{
"gw_id": "904905768149590086",
"gw_prize": "tdd",
"gw_status": "completed"
}
]
推荐阅读
- python - 遍历 html 中的所有元素并用 Beautifulsoup 替换内容
- performance - Appium IOS加载所有页面元素
- javascript - 在普通动画anime.js中摇动动画
- java - 如何在 Caffeine Cache Spring Boot 的 application.properties 层为每个缓存设置不同的规范
- python-3.x - 有没有办法在不打开媒体播放器的情况下播放音频?
- c# - Razor C# - 使用页面创建表
- python - 条件字符串替换
- javascript - Webpack 5 错误:不应从默认导出模块导入命名导出“foo”(导入为“bar”)
- javascript - Javascript 错误:未捕获的 TypeError:无法读取未定义的属性“长度”
- networking - 如何获得车辆相扑的速度