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

嵌套JSON转CSV问题求助:如何仅写入属性值至CSV文件

问题分析

当前生成的CSV把整个字典作为单个单元格输出,原因是调用csv_writer.writerow(data1)时,data1里装的是完整的store字典,writerow会把列表中的每个元素作为CSV的一列,这里字典是单个元素,所以被转成字符串放进一个单元格里。

修复方案

直接提取字典的值列表,按表头顺序传入writerow即可。同时可以优化代码,避免循环外复用同一个字典对象,以及用dict.get()简化缺失键的处理:

import json
import csv

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

employee_data = data['cn']

header = ['firstName','lastName','jobtitle','company','workPostalCode','workCity','workStreet','mobilePhone','email']

# 写入CSV文件,使用with语句自动关闭文件
with open('data_file.csv', 'w', newline='') as data_file:
    csv_writer = csv.writer(data_file)
    csv_writer.writerow(header)

    for emp in employee_data:
        attrs = emp.get("_attrs", {})
        # 按表头顺序提取对应的值,缺失则用None填充
        row = [attrs.get(key, None) for key in header]
        csv_writer.writerow(row)
改动说明
  1. 去掉了store字典和data1列表,直接用列表推导式按表头顺序提取值,避免冗余代码。
  2. 使用emp.get("_attrs", {})确保即使某个员工没有_attrs键也不会报错,返回空字典。
  3. 用attrs.get(key, None)替代try-except块,更简洁地处理缺失的属性键,自动填充None。
  4. 使用with语句管理CSV文件,无需手动调用close(),更安全。
  5. 新增newline=''参数,避免Windows系统下CSV出现空行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:32:03