基于现有的 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都是后面生成的。

我们需要做的就是附加名称、goIDmyID 的值。 名称应与不带子网的goID 相同,goIDgoIDmyIDmyID

将其转换为 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 文件

有没有一种有效的方法可以附加到现有的 csv 文件而不在 R 中重复?

将 pandas DataFrame 列附加到 CSV

添加列并附加数据框

如何将熊猫数据添加到现有的 csv 文件中?

将附加扩展与现有的词法分析器相关联