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

如何将CSV文件转换为指定结构的JSON文件?

实现CSV转指定格式JSON的解决方案

针对你提供的CSV格式,要生成以Topic为顶级键、Characteristics为子键、Total为对应值的JSON结构,核心是避免重复Topic对应的数据被覆盖。以下是Python的实现方案:

核心思路

之前出现数据覆盖,是因为每次处理Topic时直接覆盖了已有的子字典。正确逻辑是:

  • 初始化一个空字典存储最终结果
  • 遍历CSV每一行数据,先检查当前Topic是否已存在于结果字典中
  • 若不存在则创建一个空的子字典,再将当前Characteristics和Total添加到该子字典中;若已存在则直接向子字典添加键值对

代码实现

import csv
import json

# 初始化结果字典
result = {}

# 读取CSV文件
with open('your_file.csv', 'r', encoding='utf-8') as csv_file:
    reader = csv.DictReader(csv_file)
    for row in reader:
        topic = row['Topic']
        char = row['Characteristics']
        # 转换Total的类型:区分整数和浮点数
        total_value = float(row['Total']) if '.' in row['Total'] else int(row['Total'])
        
        # 检查Topic是否已存在,不存在则创建空字典
        if topic not in result:
            result[topic] = {}
        # 向对应Topic的子字典添加键值对
        result[topic][char] = total_value

# 将结果写入JSON文件
with open('output.json', 'w', encoding='utf-8') as json_file:
    json.dump(result, json_file, indent=4, ensure_ascii=False)

代码说明

  1. 读取CSV:使用csv.DictReader可以直接通过列名获取每一行的数据,无需处理索引
  2. 类型转换:CSV读取的Total是字符串类型,需要根据是否包含小数点转换为整数或浮点数,保证JSON中的数值类型正确
  3. 避免覆盖:通过if topic not in result的判断,确保每个Topic对应的子字典只会被初始化一次,后续只做键值对的添加操作

运行上述代码后,生成的output.json就会完全符合你需要的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:50:33