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

Python中如何将列表指定列(排除id)保存到CSV

解决OrderedDict列表导出CSV时排除指定列的问题

嘿,我来帮你搞定这个CSV导出的问题!你的代码思路没问题,但有几个小细节踩坑了,我给你修正并优化一下:

原代码的问题点

  • 你用d[1]、d[2]去取值是错误的:OrderedDict是键值对结构,必须通过键名(比如'name'、'email')访问,不能用索引位置。
  • 变量名混淆:循环里遍历的是new_d里的item,但取值时却用了d,应该统一遍历你原始的列表d。
  • 表头字段和数据键的大小写对应:你定义的表头是['Name','Email'],但原始数据的键是小写的name、email,要注意映射关系。

修正后的实现(两种方式)

方式1:用csv.writer手动构建行数据

这种方式适合简单场景,直接按需求提取对应字段的值:

import csv
from collections import OrderedDict

# 你的原始OrderedDict列表
d = [OrderedDict([('id', '1'), ('name', 'Jack'), ('email', 'jack@email.com')]),
     OrderedDict([('id', '2'), ('name', 'Ricky'), ('email', 'ricky@email.com')])]

path = 'output.csv'  # 替换成你的实际文件路径
fields = ['Name', 'Email']

# 打开文件时加上newline=''避免Windows下出现空行,指定utf-8编码保证兼容性
with open(path, 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(fields)  # 写入表头
    for item in d:
        # 通过键名提取需要的字段值,注意原始数据的键是小写
        writer.writerow([item['name'], item['email']])

方式2:用csv.DictWriter(更适合字典结构)

这种方式更灵活,尤其当字段较多时,不需要手动拼接每行数据:

import csv
from collections import OrderedDict

d = [OrderedDict([('id', '1'), ('name', 'Jack'), ('email', 'jack@email.com')]),
     OrderedDict([('id', '2'), ('name', 'Ricky'), ('email', 'ricky@email.com')])]

path = 'output.csv'
# 定义表头和原始数据键的映射关系
field_mapping = {
    'Name': 'name',
    'Email': 'email'
}

with open(path, 'w', newline='', encoding='utf-8') as f:
    # 传入表头字段名
    writer = csv.DictWriter(f, fieldnames=field_mapping.keys())
    writer.writeheader()  # 自动写入表头
    for item in d:
        # 构建只包含需要字段的字典
        export_row = {header: item[key] for header, key in field_mapping.items()}
        writer.writerow(export_row)

额外注意事项

  • newline='':这是Python官方推荐的写法,能避免Windows系统下写入CSV时每行之间出现多余的空行。
  • encoding='utf-8':确保导出的文件支持中文等特殊字符,避免乱码问题。
  • 如果后续需要调整导出的字段,只需要修改field_mapping或者手动提取的键名即可,非常方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:28:54