将JSON中的字符串值替换为Lis

2024-09-27 19:24:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似的Json结构:

{
    "test": [
        {
            "name1": "tap",
            "name2": "Tik; eev; asdv; asdfa; sadf"
        },
        {
            "name1": "Pap",
            "name2": "Tik; eev; asdv; asdfa; sadf"
        }
    ]
}

我希望键name2value是一个列表。例如:

value"Tik; eev; asdv; asdfa; sadf"替换为['Tik', ' eev', ' asdv', ' asdfa', ' sadf']

这就是我所做的,但是我不能将json更新为新的json

import json

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

for x in data['test']:
    string = x['name2']
    my_list = string.split(";")
    string = my_list


with open('testdata.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4)

当我打开testdata.json它是一样的


Tags: testjsondatastringvalueaswithopen
2条回答

当你这么做的时候

string = ingredient['name2']
[...]
string = my_list

你得到的字符串没有上下文。-string只是一个存储某些内容的名称,它没有链接回ingredient字典

您需要将这里的最后一行更改为ingredient['name2'] = my_list,这样您就可以更改字典的内部内容,而不是某些本地字符串

您需要将拆分列表分配回数据。在代码中,您只是在丢弃它。您将x['name2']视为对字符串的引用,而不是字符串值。不能将它赋给另一个变量并期望它反映在数据结构中—需要用新值显式更新数据结构

import json

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

for x in data['test']:
    string = x['name2']
    my_list = string.split(";")
    x['name2'] = my_list


with open('testdata.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4)

相关问题 更多 >

    热门问题