[英]Rename the key name in json file using python
我想更新我的 json 文件中的键名,文件中的对象如下所示:
[{"marka": "تويوتا" , "tag" : "MANF"},
{"marka": "شيفروليه" , "tag" : "MANF"},
{"marka": "نيسان" , "tag" : "MANF"}]
我想将键名“marka”更改为“entity”,所以它会是这样的:
[{"entity": "تويوتا" , "tag" : "MANF"},
{"entity": "شيفروليه" , "tag" : "MANF"},
{"entity": "نيسان" , "tag" : "MANF"}]
这是我尝试过的代码,但它给出了一个错误:
import json
with open("haraj_marka_arabic.json", "r") as jsonFile:
data = json.load(jsonFile)
for d in data:
d["entity"] = d.pop("marka")
with open("haraj_marka_arabic.json", "w") as jsonFile:
json.dump(data, jsonFile)
错误是:
文件“marka.py”,第 8 行,在 d["entity"] = d.pop("marka") KeyError: 'marka'
您的问题在于输入数据。
只需将调试记录器添加到 for 循环中,您可以在其中更改键名并在更改键名之前打印d.keys()
就像这样 ->
for d in data:
print(d.keys())
d["entity"] = d.pop("marka")
看看钥匙是否真的是marka
而不是别的东西。
该代码运行良好,问题出在您的输入数据中。 您文件中的 json 之一没有marka
键。
为了找到无效的 json,您可以运行:
print([d for d in data if "marka" not in d])
您可以使重命名有条件:
for d in data:
if "marka" in d : d["entity"] = d.pop("marka")
或设置默认值:
for d in data:
d["entity"] = d.pop("marka",None)
import json
with open("haraj_marka_arabic.json", "r") as jsonFile:
data = json.load(jsonFile)
for d in data:
d['entity'] = d['marka']
del d['marka']
with open("haraj_marka_arabic.json", "w") as jsonFile:
json.dump(data, jsonFile)
这将帮助您更新值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.