You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将嵌套JSON中dependency的'-'替换为CSV对应值?

解决方案

以下是可直接运行的Python代码,基于标准库实现需求:

import json
import csv

# 1. 读取CSV中的dependency列数据
dependency_values = []
with open('statistics.csv', 'r', encoding='utf-8') as csv_file:
    # 使用DictReader按列名读取,需确保CSV表头包含'dependency'
    csv_reader = csv.DictReader(csv_file)
    for row in csv_reader:
        # 收集每一行的dependency值
        dependency_values.append(row['dependency'])

# 2. 读取JSON文件并修改指定字段
with open('info.json', 'r', encoding='utf-8') as json_file:
    json_data = json.load(json_file)

# 遍历jobs数组,逐个替换dependency值
for index, job_item in enumerate(json_data['jobs']):
    if index < len(dependency_values):
        # 替换attributes下的dependency字段
        job_item['attributes']['dependency'] = dependency_values[index]
    else:
        # 处理CSV数据不足的情况,可根据需求调整逻辑
        print(f"注意:CSV仅提供{len(dependency_values)}个依赖值,第{index+1}个job未替换")

# 3. 保存修改后的JSON文件
with open('updated_info.json', 'w', encoding='utf-8') as updated_json:
    # indent=2保证格式化输出,ensure_ascii=False避免中文转义
    json.dump(json_data, updated_json, indent=2, ensure_ascii=False)

关键注意事项

  • 路径校验:确保info.json、statistics.csv与脚本在同一目录,或替换为绝对路径(如/home/user/load/statistics.csv)
  • 列名匹配:确认CSV表头的依赖列名为dependency(大小写敏感),如果实际列名不同,需修改row['dependency']中的键名
  • 结构匹配:保证JSON结构确实是顶层含jobs数组,每个数组元素下有attributes字段,且attributes包含dependency键
  • 数据一致性:如果CSV的行数与jobs数组长度不匹配,代码会打印警告,可根据需求改为抛出异常或保留原'-'值

常见错误排查

如果之前的代码失效,大概率是以下原因:

  • 未正确读取CSV表头,导致取到的是表头字符串而非实际数据
  • JSON字段路径错误(如误写为job['attribute']而非job['attributes'])
  • 修改后未将数据写入文件,仅在内存中修改
  • 文件编码问题,未指定encoding='utf-8'导致读取乱码

内容的提问来源于stack exchange,提问作者jojo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 03:20:14