[英]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.