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

如何将CSV按年份分组生成指定结构的多个JSON文件

问题原因与修改方案

你当前代码存在两个核心问题:

  1. 价格被包裹为列表:代码中price = fields[2:]使用了切片语法,list[2:]返回的是从索引2到末尾的子列表,所以单值也会被包裹为列表,修改为price = int(fields[2])即可直接拿到数字类型的价格值。
  2. 结构不符合要求:你当前的response是直接以年份为key存储产品键值对,目标结构需要每个年份对应包含year、products、processed三个固定字段的对象,需要调整初始化逻辑。

修改后完整代码

import json

csv = """2021,P01,50
2022,P03,60
2021,P02,30
"""
response = {}

for line in csv.splitlines():
    fields = line.split(",")
    year, product, price = fields[0], fields[1], int(fields[2])
    # 首次遇到该年份时初始化目标结构
    if year not in response:
        response[year] = {
            "year": year,
            "products": {},
            "processed": "true"
        }
    # 把产品价格写入对应年份的products字段
    response[year]["products"][product] = price

# 按年份输出结果,需要写入单独JSON文件可以取消下面的注释
for year, data in response.items():
    print(f"{year}年输出结果:")
    print(json.dumps(data, indent=2))
    # 写入本地JSON文件
    # with open(f"{year}.json", "w", encoding="utf-8") as f:
    #     json.dump(data, f, indent=2)

运行输出结果

2021年输出结果:
{
  "year": "2021",
  "products": {
    "P01": 50,
    "P02": 30
  },
  "processed": "true"
}
2022年输出结果:
{
  "year": "2022",
  "products": {
    "P03": 60
  },
  "processed": "true"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:36:04