如何将管道分隔的CSV文件转换为指定结构的JSON格式文件
管道分隔CSV转指定结构JSON的代码调整方案
原有代码问题说明
- 仅使用单个字典循环调用
update()方法,每次迭代都会覆盖前一条记录的内容,最终只保留最后一行数据 - 未对
Pairs字段做拆分解析处理,也没有新增要求的系统日期字段
调整后可直接运行的实现代码
import pandas as pd import json from datetime import datetime # 读取管道分隔符的CSV文件 df = pd.read_csv('filename.csv', sep="|") result = [] # 统一获取当前系统日期,可根据需求调整日期格式 sys_date = datetime.now().strftime("%Y-%m-%d") for _, row in df.iterrows(): # 处理SetrecordID字段,转换为整数列表 set_record_ids = [int(i) for i in row["SetrecordID"].split(",")] # 处理Pairs字段为字典列表 # 先去除首尾引号,再按","拆分得到每个配对项 pair_raw = row["Pairs"].strip('"').split('","') pairs = [] for seq, pair_item in enumerate(pair_raw, 1): pair_key, match_score = pair_item.split(",") pairs.append({ f"Pair{seq}": pair_key, "matchscore": int(match_score) }) # 组装单条记录加入结果列表 result.append({ "Date": sys_date, "SetrecordID": set_record_ids, "SetMatchScore": row["SetMatchScore"], "Pairs": pairs }) # 输出JSON文件,带格式化缩进 with open("output.json", "w", encoding="utf-8") as f: json.dump(result, f, ensure_ascii=False, indent=4) # 控制台打印验证结果 print(json.dumps(result, indent=4, ensure_ascii=False))
输出说明
运行后生成的output.json完全符合要求的结构:所有记录存放在顶层数组中,每条记录包含系统日期字段,SetrecordID为整数列表,Pairs为带有序号配对键和匹配分的字典列表。
内容的提问来源于stack exchange,提问作者Naveen
相关产品推荐
相关产品推荐

