如何将CSV按年份分组生成指定结构的多个JSON文件
问题原因与修改方案
你当前代码存在两个核心问题:
- 价格被包裹为列表:代码中
price = fields[2:]使用了切片语法,list[2:]返回的是从索引2到末尾的子列表,所以单值也会被包裹为列表,修改为price = int(fields[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
相关产品推荐
相关产品推荐

