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

使用Python导出CSV指定列至新CSV遇异常,请求技术排查

CSV指定列导出失败的问题排查与修复

先明确你代码里的几个关键错误:

  • 变量名不匹配:循环里写的是for line in csv_reader,但后续却用row['Id']调用未定义的row变量,直接会触发NameError报错。
  • 读取方式错误:你用的csv.reader返回的是每行的列表(比如第一行是['Id', 'Name', ...]),不能通过字典键row['Id']访问列值,要么按索引取(比如line[0]),要么改用csv.DictReader才能通过列名定位数据。
  • 写入参数错误:csv_writer.writerow('c_1')里的引号把变量变成了字符串,而且writerow要求传入列表/元组这类可迭代对象,直接传字符串会把每个字符拆成单独单元格写入。
  • 遗漏表头写入:你没把目标列的表头(比如Id)写入新文件,导出结果会只有数据没有表头。

修复后的代码(以导出Id列为例)

import csv

# 定义要导出的目标列
target_columns = ['Id']

with open(r'D:\Clouds\OneDrive\Desktop\python_tamrin\students.csv', 'r') as read_obj:
    # 用DictReader支持按列名访问数据,示例数据是制表符分隔,需指定delimiter
    csv_reader = csv.DictReader(read_obj, delimiter='\t')
    with open('new_names_1.csv', 'w', newline='') as new_file:
        csv_writer = csv.writer(new_file)
        # 先写入目标列的表头
        csv_writer.writerow(target_columns)
        # 遍历每行提取目标列数据并写入
        for row in csv_reader:
            row_data = [row[col] for col in target_columns]
            csv_writer.writerow(row_data)

补充说明:你的示例CSV数据是制表符(Tab)分隔的,不是默认的逗号分隔,所以初始化DictReader时必须指定delimiter='\t',否则会把整行内容当成一个单元格读取。如果实际文件是逗号分隔,可以去掉该参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:14:59