Python中如何将CSV文件列转换为JSON列数组格式
CSV转列数组格式JSON实现方案
原脚本存在的问题
- 输出结构为逐行存储的字典列表,不符合列聚合的数组格式要求
- 读取的CSV单元格值未做数值类型转换,全部为字符串类型
- 存在语法错误:
k字段定义后多了一个多余逗号 alpha字段取值逻辑错误,未读取行内对应值,错误写为固定列表- 缺失
absorption_length字段的读取逻辑
可直接运行的正确代码
import csv import json # 初始化目标结构,每个字段对应一个空数组 output_data = { "wavelength": [], "n": [], "k": [], "alpha": [], "absorption_length": [] } # 读取CSV文件 with open('test.csv', 'r', encoding='utf-8') as csv_file: reader = csv.DictReader(csv_file) for row in reader: # 将每个字段的值转为浮点数后,追加到对应数组 output_data["wavelength"].append(float(row["wavelength"])) output_data["n"].append(float(row["n"])) output_data["k"].append(float(row["k"])) output_data["alpha"].append(float(row["alpha"])) output_data["absorption_length"].append(float(row["absorption_length"])) # 写入JSON文件 with open('data.json', 'w', encoding='utf-8') as json_file: json.dump(output_data, json_file, indent=2)
关键逻辑说明
- 预先定义好列名到空列表的映射,遍历CSV行时直接向对应列表追加值,最终直接输出该字典即可得到要求的列数组结构
- 用
float()对读取到的单元格值做类型转换,解决原脚本输出值全为字符串的问题 - 写入JSON时传入
indent=2参数,输出格式化后的缩进结构,和示例格式完全一致 - 读写文件时显式指定
encoding='utf-8',避免跨系统使用时出现编码乱码问题
内容的提问来源于stack exchange,提问作者Adam Merckx
相关产品推荐
相关产品推荐

