python中的json数据操作

python中的json数据操作,python,python-3.x,Python,Python 3.x,我有两组JSON格式的数据: 数据1 数据2 我试图检查data1和data2中的en_name是否匹配。在比赛中,请执行以下操作: 创建另一个映射数据集(dict)作为data3,该数据集将包含两个元素。来自数据1的完整的spcg数组和来自数据2的e_id 用数据2中匹配的e\u id替换spcg数组中键b\u id(此处插入数据2中的e\u id)的默认值 这是我尝试过的,但它与en\u名称不匹配。 没有关于如何实现这一点的线索,特别是第二个,因为我不是python方面的专家 ab=[] c

我有两组JSON格式的数据:

数据1

数据2

我试图检查data1和data2中的
en_name
是否匹配。在比赛中,请执行以下操作:

  • 创建另一个映射数据集(dict)作为data3,该数据集将包含两个元素。来自数据1的完整的
    spcg
    数组和来自数据2的
    e_id
  • 用数据2中匹配的
    e\u id
    替换
    spcg
    数组中键
    b\u id
    (此处插入数据2中的e\u id)的默认值
  • 这是我尝试过的,但它与
    en\u名称
    不匹配。 没有关于如何实现这一点的线索,特别是第二个,因为我不是python方面的专家

    ab=[]
    cd=[]
    for keyt in data1:
        temp=data1['en_name']
        for keyz in data2:
            if temp == keyz['en_name']:
                 ab.append(keyz['e_id'])
                 cd.append(key['spcg'])
    data3 =[{'e_name': b, 'spcg': l} for b, l in zip(ab, cd)]
    

    任何帮助都会很好

    您应该使用python中内置的
    json-json编码器和解码器
    库。此库简化了
    json
    文件的处理

    以下是您可能要尝试的代码:

    import json
    
    data3 = []
    with open("data1.json", "r") as f1:
        data1 = json.load(f1)
        with open("data2.json", "r") as f2:
            data2 = json.load(f2)
            for item1 in data1["c_u0"]:
                for item2 in data2:
                    if item1["en_name"] == item2["en_name"]:
                        spcg = item1["spur"]["spcg"]
                        eid = item2["eid"]
    
                        for sp in spcg:
                            sp["b_id"] = eid # substitute the b_id with eid
    
                        data3.append({ "spcg": spcg, "e_id": eid})
    
    print(data3)
    

    希望这能有所帮助。

    在处理JSON数据时,您可以通过使用库使其变得更容易,例如,标准中包含了哪些内容library@KJTHoward是的,我也了解了同样的知识,但这有什么帮助?你能详细说明一下吗?只是检查了链接,发现
    data1
    不是一个有效的JSON字符串。不简单地将JSON字符串粘贴到这里作为文本的原因是什么?@accdias更改了相同的内容,并在问题1中更新了逗号缺少,感谢您指出它没有按照预期正确匹配名称:“《akamai app external-dfgt也应该根据所需的输出进行匹配,但它只匹配
    en_name:”Aakle akamai
    @John这是因为它们在您的json文件中不同,再次检查
    数据2中的
    -
    后面是否有额外的空格。如果两者在间距和全部方面相同,json
    是否仅与名称完全匹配?是。对于要匹配的字符串,它们应该包含相同的字符。您可以尝试
    item2[“en_name”]。在比较时替换('-','-')
    ab=[]
    cd=[]
    for keyt in data1:
        temp=data1['en_name']
        for keyz in data2:
            if temp == keyz['en_name']:
                 ab.append(keyz['e_id'])
                 cd.append(key['spcg'])
    data3 =[{'e_name': b, 'spcg': l} for b, l in zip(ab, cd)]
    
    import json
    
    data3 = []
    with open("data1.json", "r") as f1:
        data1 = json.load(f1)
        with open("data2.json", "r") as f2:
            data2 = json.load(f2)
            for item1 in data1["c_u0"]:
                for item2 in data2:
                    if item1["en_name"] == item2["en_name"]:
                        spcg = item1["spur"]["spcg"]
                        eid = item2["eid"]
    
                        for sp in spcg:
                            sp["b_id"] = eid # substitute the b_id with eid
    
                        data3.append({ "spcg": spcg, "e_id": eid})
    
    print(data3)