使用Python将每行存JSON对象的CSV文件转换为JSON对象数组
CSV每行JSON转合法JSON数组解决方案
完整可运行代码
import json import csv json_result = [] # 读取CSV文件,自动处理CSV格式的双引号转义 with open("testData.csv", "r", encoding="utf-8") as csv_file: reader = csv.reader(csv_file) for row in reader: # 跳过空行 if not row or not row[0].strip(): continue # 将JSON字符串解析为Python字典,避免直接拼接字符串出现格式错误 json_obj = json.loads(row[0].strip()) json_result.append(json_obj) # 序列化整个数组为格式化JSON,indent控制缩进大小,ensure_ascii兼容中文等非ASCII字符 formatted_json = json.dumps(json_result, indent=4, ensure_ascii=False) # 输出到文件,生成的文件可直接导入NoSQL数据库 with open("output.json", "w", encoding="utf-8") as output_file: output_file.write(formatted_json) # 控制台打印验证结果 print(formatted_json)
问题原因说明
- 之前硬编码字符串加入数组后出现单引号,是Python打印列表对象时的默认输出规则,仅为展示用的标识,不是实际内容。不要直接拼接字符串生成JSON,统一用
json模块做序列化可以完全避免格式问题。 - 读取CSV出现重复双引号,是因为CSV格式规范要求字段内的双引号需要用两个连续双引号转义,直接按行读取不会自动处理该转义规则,用内置的
csv模块读取可自动还原原始字符串内容。
使用说明
替换代码中testData.csv为你的实际文件路径,若CSV包含表头行,可在for row in reader:前添加next(reader)跳过表头。运行后生成的output.json就是符合要求的JSON数组文件,可直接导入MongoDB等NoSQL数据库使用。
内容的提问来源于stack exchange,提问作者Jason Elwood
相关产品推荐
相关产品推荐

