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

Python csv.DictWriter写入含列表字段字典生成目标CSV的方法

问题原因

Python自带的csv.DictWriter写入时会直接将字段值转为字符串存入单元格,你字典中add、reg字段的值是列表类型,直接写入就会把带方括号的完整列表字符串塞进单个单元格,无法得到列表元素逐行拆分、日期时间字段跨行重复的目标效果。

修正方案

写入前先对原始数据做扁平化处理:遍历每条记录中add、reg列表的对应索引,将同一索引位置的add值、reg值和该条记录的日期、时间组合成新的单行记录,所有记录拆分完成后再统一写入CSV即可。

修正后的可直接运行代码如下:

import csv

# 原始数据
d = [{'local_date': '12/16/2022', 'local_time': '12:00', 'add':[2, 8, 22, 17], 'reg':[1001, 1002, 1003, 1004] }]
fields = ['local_date', 'local_time', 'add', 'reg']

# 拆分含列表的嵌套记录为单行结构
flattened_rows = []
for item in d:
    # 按两个列表的最短长度遍历,避免长度不匹配时索引报错
    for add_val, reg_val in zip(item['add'], item['reg']):
        flattened_rows.append({
            'local_date': item['local_date'],
            'local_time': item['local_time'],
            'add': add_val,
            'reg': reg_val
        })

# 写入CSV
with open("tester.csv", "w", newline='', encoding='utf-8') as outfile:
    writer = csv.DictWriter(outfile, fieldnames=fields)
    writer.writeheader()
    writer.writerows(flattened_rows)
注意事项
  • 打开CSV文件时传入newline=''是Python官方csv模块推荐的标准写法,可以避免不同系统下写入出现多余空行的问题
  • 代码中用zip()配对两个列表的元素,会自动以较短的列表长度为准完成遍历,如果需要强制要求两个列表长度一致,可以在遍历前加长度校验逻辑抛出提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:48:46