基于现有的 CSV 添加一些变量并附加到 Python 中的现有 JSON
Posted
技术标签:
【中文标题】基于现有的 CSV 添加一些变量并附加到 Python 中的现有 JSON【英文标题】:Add few variable based on the existing CSV and append to the existing JSON in Python 【发布时间】:2022-01-22 13:06:00 【问题描述】:我们确实有一个 csv 和一个 json。 根据CSV里面的值,我们需要修改json。
例如:
输入 CSV:
myID,goID1,goID2,goID3
a123-b456-c789,10.0.0.0/16,10.1.0.0/16,10.2.0.0/16
a123-b456-c789,11.0.0.0/16,11.1.0.0/16,11.2.0.0/16
输入 JSON:
[
"id": "123",
"name": "test1",
"goValues": [
"id": "456",
"name": "10.3.0.0",
"myID": "a123-b456-c789",
"status": "active",
"goID": "10.3.0.0/16"
,
"id": "789",
"name": "10.4.0.0",
"myID": "a123-b456-c789",
"status": "active",
"goID": "10.4.0.0/16"
]
]
现在,在这里我需要(更新)添加额外的 goValues
,我们从 CSV 中得到它。 goValues
里面的id和status都是后面生成的。
我们需要做的就是附加名称、goID
、myID
的值。
名称应与不带子网的goID
相同,goID
为goID
,myID
为myID
。
将其转换为 json,如下所示:
"name": "10.0.0.0",
"myID": "a123-b456-c789",
"goID": "10.0.0.0/16"
,
"name": "10.1.0.0",
"myID": "a123-b456-c789",
"goID": "10.1.0.0/16"
,
"name": "10.2.0.0",
"myID": "a123-b456-c789",
"goID": "10.2.0.0/16"
并附加到 input_JSON:
[
"id": "123",
"name": "test1",
"goValues": [
"id": "456",
"name": "10.3.0.0",
"myID": "a123-b456-c789",
"status": "active",
"goID": "10.3.0.0/16"
,
"id": "789",
"name": "10.4.0.0",
"myID": "a123-b456-c789",
"status": "active",
"goID": "10.4.0.0/16"
,
"name": "10.0.0.0",
"myID": "a123-b456-c789",
"goID": "10.0.0.0/16"
,
"name": "10.1.0.0",
"myID": "a123-b456-c789",
"goID": "10.1.0.0/16"
,
"name": "10.2.0.0",
"myID": "a123-b456-c789",
"goID": "10.2.0.0/16"
]
]
【问题讨论】:
【参考方案1】:试试这个:
csv = pd.read_csv('csv.csv')
with open('json.json') as f:
j = json.load(f)
for idx, row in csv.iterrows():
for goID in row.filter(like='goID'):
j[0]['goValues'].append(
'name': goID.split('/')[0],
'myID': row['myID'],
'goID': goID,
)
with open('json.json', 'w') as f:
json.dump(j, f, indent=2)
【讨论】:
以上是关于基于现有的 CSV 添加一些变量并附加到 Python 中的现有 JSON的主要内容,如果未能解决你的问题,请参考以下文章
使用 pandas 将不同位置的行附加到现有的 csv 文件