簡體   English   中英

使用 python 重命名 json 文件中的密鑰名稱

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM