如何在json文件中查找和替换部分值

Mon*_*ona 9 python json python-3.x

我有一个 json 文件,我在 python 中用作字典。json 文件真的很长,有 10k+ 条记录。我需要用“id”的值替换“iscategorical”中的 $home 部分。进行更改后,我想保存此文件,以便我可以再次将其用作字典。感谢您的帮助。这是一个示例:

{
"maps": [
    {
        "id": "xyzp",
        "iscategorical": "/u/$home/app/home"
    },
    {
        "id": "trtn",
        "iscategorical": "/u/app/$home/user"
    }
]}
Run Code Online (Sandbox Code Playgroud)

小智 18

我知道您能够成功加载文件,您要做的就是替换字符串并将结构再次保存到文件中。

为此,我们可以遍历数据中的字典列表,并item['iscategorical']通过替换$home为 的值来修改 的值item['id']

然后我们可以将修改后的结构转储回(一个新的)json 文件。

import json
with open('data.json') as f:
    data = json.load(f)

for item in data['maps']:
    item['iscategorical'] = item['iscategorical'].replace('$home', item['id'])

with open('new_data.json', 'w') as f:
    json.dump(data, f)
Run Code Online (Sandbox Code Playgroud)

  • 这很有效,但我不得不尝试一下。谢谢您的帮助! (2认同)

Jai*_*Jai 5

您的问题似乎类似于 - Parsing Values from a JSON file? 。但是对于您的情况,下面的代码片段应该有效。

import json

with open('idata.json') as infile:
  data = json.load(infile)

for elem in data["maps"]:
  elem['iscategorical']=elem['iscategorical'].replace('$home',elem['id'])

with open('odata.json', 'w') as outfile:
    json.dump(data, outfile)
Run Code Online (Sandbox Code Playgroud)