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

Python中JSON转CSV问题:仅导出表头无法写入数据

问题分析与修复方案

你的代码存在几个关键问题,导致无法正确写入所有数据:

  1. 文件重复打开并覆盖:在for i in range(len(data))循环内部每次用'w'模式打开CSV文件,会清空之前写入的内容,最终只会保留最后一条数据。
  2. 错误的遍历逻辑:training_data = data[i]['profile']得到的是单个字典对象,用for profile in training_data遍历的是字典的键,这会导致同一组数据被重复写入(次数等于字典键的数量)。
  3. 重复写入表头:每次处理一条数据都写入一次表头,导致CSV中表头重复出现。

修正后的代码

import json
import csv

# 读取JSON数据
with open('test1.json') as json_file:
    data = json.load(json_file)

# 处理空数据情况
if not data:
    print("JSON文件为空")
    exit()

# 从第一条数据的profile中提取表头
header = data[0]['profile'].keys()

# 打开CSV文件(仅打开一次),写入表头和所有数据
with open('data_file.csv', 'w', newline='') as data_file:
    csv_writer = csv.writer(data_file)
    # 写入一次表头
    csv_writer.writerow(header)
    
    # 遍历所有数据条目,依次写入对应值
    for item in data:
        row_data = item['profile'].values()
        csv_writer.writerow(row_data)

代码说明

  • 将CSV文件的打开操作移到外层,确保只打开一次,避免覆盖之前的数据。
  • 从第一条数据的profile中提取表头,仅写入一次。
  • 直接遍历data中的每个条目,提取profile的对应值写入CSV,去掉不必要的内层循环。
  • 使用with语句管理文件,无需手动调用close(),更安全可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:10:23