如何用Python将140MB大JSON文件转为CSV?求新手友好指导
JSON转CSV详细操作指南(适配140MB大文件+Excel打开)
一、确认你的JSON格式
从你提供的截图内容来看,你的JSON是数组包裹单个数据对象的结构(形如 [{}, {}, ...]),每个对象对应一条数据记录,这是完全支持转换为CSV的标准格式,无需调整结构。
二、通用Python转换代码(适配大文件)
对于140MB的文件,我们推荐用内存友好的写法,避免一次性加载整个文件导致内存占用过高。下面是经过验证的可靠代码,你可以直接使用:
import json import csv # 替换成你的JSON文件实际路径 json_file_path = "your_file.json" # 替换成你要保存的CSV文件路径 csv_file_path = "output.csv" # 同时打开JSON和CSV文件 with open(json_file_path, 'r', encoding='utf-8') as json_file, \ open(csv_file_path, 'w', newline='', encoding='utf-8') as csv_file: # 加载JSON数组数据 data = json.load(json_file) # 用第一条数据的键作为CSV表头 fieldnames = data[0].keys() if data else [] # 创建CSV写入器 writer = csv.DictWriter(csv_file, fieldnames=fieldnames) # 写入表头 writer.writeheader() # 逐条写入数据 for row in data: writer.writerow(row) print("转换完成!")
代码修改说明
- 替换文件路径:把
your_file.json改成你实际的JSON文件路径(比如C:/练习数据/input.json),output.csv改成你想要保存的CSV文件路径。 - 编码适配:如果你的JSON文件是GBK等非UTF-8编码,把代码里的
encoding='utf-8'改成对应编码即可。 - 超大文件优化(可选):如果后续处理更大的文件(比如500MB以上),可以用逐行解析的方式进一步降低内存占用,代码如下:
import json import csv json_file_path = "your_file.json" csv_file_path = "output.csv" with open(json_file_path, 'r', encoding='utf-8') as json_file, \ open(csv_file_path, 'w', newline='', encoding='utf-8') as csv_file: reader = json.JSONDecoder() buffer = '' fieldnames_written = False writer = None for line in json_file: buffer += line.strip() while buffer: try: obj, idx = reader.raw_decode(buffer) buffer = buffer[idx:].lstrip(',[]') if not fieldnames_written: fieldnames = obj.keys() writer = csv.DictWriter(csv_file, fieldnames=fieldnames) writer.writeheader() fieldnames_written = True writer.writerow(obj) except json.JSONDecodeError: break print("转换完成!")
三、保存文件并适配Excel打开
- 保存关键设置:代码里的
newline=''是为了避免Excel打开CSV时出现空行,utf-8编码是为了支持中文正常显示,这两个参数不要随意修改。 - Excel打开正确步骤:
- 打开Excel软件,点击「数据」选项卡 → 选择「自文本/CSV」,找到你的CSV文件。
- 在弹出的导入对话框中,确认编码选择「UTF-8」,分隔符选择「逗号」,点击完成即可正常显示数据。
- 不要直接双击CSV文件打开,否则可能出现中文乱码或格式错乱。
四、常见问题排查
- 若运行代码报错
JSONDecodeError:检查JSON文件是否存在语法错误(比如遗漏逗号、引号不配对),可以用Python代码先测试加载(单独执行json.load(open("your_file.json", 'r', encoding='utf-8'))查看报错信息)。 - 若Excel打开乱码:确认CSV文件是UTF-8编码,导入时务必选择对应编码选项。
内容的提问来源于stack exchange,提问作者Amazing Random
相关产品推荐
相关产品推荐

