You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JSON数据列表写入CSV文件并优化现有代码

JSON列表数据写入CSV的优化方案

原代码存在的问题

  • 变量名不匹配:定义表头变量为headers,写入表头时调用了未定义的header;循环内生成的行列表为l,写入时调用了未定义的data,会直接抛出异常
  • 逻辑判断错误:if j in json_response是判断键是否存在于整个JSON列表中,而非当前遍历的单条数据字典,取值时误将整条字典i存入列表,输出内容完全错误
  • 资源管理缺陷:未使用上下文管理器托管文件对象,程序异常中断时会出现文件句柄泄漏,资源无法正常释放
  • 执行效率低下:双层循环逐列判断拼接、逐行写入的逻辑冗余,面对大体量数据时IO耗时会大幅上升

优化后实现方案

核心优化点

  • 采用csv.DictWriter原生适配字典结构数据,无需手动拼接每行列值,代码简洁度和可读性大幅提升
  • 用with上下文管理器自动管理文件生命周期,无需手动调用close(),异常场景也能安全释放资源
  • 指定utf-8-sig编码避免Windows系统下打开CSV出现乱码,新增newline=''参数避免写入后出现多余空行
  • 内置restval参数直接指定缺失键的默认填充值,省去手动判断赋值的冗余逻辑
  • 调用writerows()批量写入所有数据,大幅减少IO操作次数,对大体量数据场景的性能提升显著

优化代码

import csv

headers = ['id', 'name', 'num', 'Country']

with open('file.csv', 'w', encoding='utf-8-sig', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=headers, restval='none')
    # 写入表头
    writer.writeheader()
    # 批量写入所有数据
    writer.writerows(json_response)

超大体量数据额外优化

如果数据量级达到十万条以上,可以引入pandas进一步提升写入效率:

import pandas as pd

headers = ['id', 'name', 'num', 'Country']
# 生成DataFrame并自动填充缺失值为none
df = pd.DataFrame(json_response, columns=headers).fillna('none')
# 写入CSV,不保留索引列
df.to_csv('file.csv', index=False, encoding='utf-8-sig')

内容的提问来源于stack exchange,提问作者Rahul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 20:45:02