python - python中的json数据操作
问题描述
我有两组 JSON 格式的数据:
数据1
{
"c_u0": [
{
"en_name": "akamai app external-dfgt",
"en_id": 446,
"spur": {
"spcg": [
{
"a_id": 234,
"b_id": "e_id from data2 to be inserted here",
"cls": [
{
"address": "{\"fgt\":\"Cc\",\"Ik\":\"01\",\"IV_Y\":\"CP1\",\"IID\":\"0054\",\"IY\":1,\"SL\":\"https://ap.com\",\"OC\":\"\"}",
"cl_id": 456103,
"type": "SC",
"name": "SFTPC",
"srt": "sdp%",
"oner": "ar"
}
],
"adata": false
}
]
}
},
{
"en_name": "Aakle-akamai",
"en_id": 444,
"spur": {
"spcg": [
{
"a_id": 456,
"b_id": "e_id from data2 to be inserted here",
"cls": [
{
"address": "{\"fgt\":\"Cc\",\"Ik\":\"01\",\"IV_Y\":\"CP1\",\"IID\":\"0054\",\"IY\":1,\"SL\":\"https://ap.com\",\"OC\":\"\"}",
"cl_id": 4545673,
"type": "SG",
"name": "SMC",
"srt": "sdfe",
"oner": "agtr"
}
],
"adata": false
}
]
}
},
{
"en_name": "APLOI - Zedgede",
"en_id": 48946,
"spur": {
"spcg": [
{
"a_id": 47654,
"b_id": "e_id from data2 to be inserted here",
"cls": [
{
"address": "{\"fgt\":\"Cc\",\"Ik\":\"01\",\"IV_Y\":\"CP1\",\"IID\":\"0054\",\"IY\":1,\"SL\":\"https://ap.com\",\"OC\":\"\"}",
"cl_id": 456178803,
"type": "SjC",
"name": "SFTPd",
"secret": "sdpb%",
"owner": "arb"
}
],
"adata": false
}
]
}
}
]
}
数据2
[
{
"en_name": "Aakle-akamai",
"eid": 1111
},
{
"en_name": "Appg - ies"
},
{
"en_name": "c console",
"e_id": 1131
},
{
"en_name": "akamai app external- dfgt",
"e_id": 1122
}
]
我正在尝试检查en_name
data1 和 data2 中是否匹配。在比赛中,然后执行以下操作:
- 创建另一个映射的数据集(dict)作为 data3,它将有两个元素。
spcg
来自 data1 和e_id
data2的完整数组。 - 将数组中key的默认值
b_id
(来自data2的e_id插入这里)替换为来自data2spcg
的匹配项e_id
。
这是我尝试过的,甚至与en_name
. 不知道如何实现这一点,特别是第二个,因为我不是 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 encoder and decoder
库。这个库简化了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)
希望这可以帮助。
推荐阅读
- javascript - Google BigQuery 错误:语法错误:非法输入字符“%”
- haskell - Haskell - 适用于任何一个的左边
- javascript - 最长可能的 cookie 过期日期?
- c# - 使用 Linq 将结果选择到对象的新实例中
- javascript - React Native 在路由中传递参数变得未定义
- python - 从python中包含一个句子的字符串中找到重复字母最多的单词
- python - 使用美汤刮痧:在 pandas 中查找类添加信息
- java - 布尔值在这个程序中是如何工作的?
- python - 当作为脚本运行时,为什么不将源/字节代码文件作为模块导入?
- python - Scrapy-TypeError:不能混合 str 和非 str 参数错误