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

2024-09-27 20:20:46 发布

您现在位置: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)

错误是:

File "marka.py", line 8, in d["entity"] = d.pop("marka") KeyError: 'marka'


Tags: 文件injsondataastag错误with
3条回答

您的问题在于输入数据

只需在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)

相关问题 更多 >

    热门问题