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

如何使用Python的csv模块按指定列值筛选CSV行并写入新文件

使用Python csv模块实现CSV文件筛选导出

方法一:使用csv.DictReader(推荐,通过表头名取值)

这种方式直接通过列名获取数据,无需关心列的索引位置,代码可读性更强:

import csv

# 同时打开输入和输出文件,with语句自动管理文件的打开与关闭
with open('infile.csv', 'r', newline='') as infile, open('outfile.csv', 'w', newline='') as outfile:
    # 创建字典读取器,自动识别原文件表头
    csv_reader = csv.DictReader(infile)
    # 创建CSV写入器
    csv_writer = csv.writer(outfile)
    
    # 写入新文件的自定义表头
    csv_writer.writerow(['points', 'rank'])
    
    # 遍历每一行数据
    for row in csv_reader:
        # 判断筛选条件:role为student且status为good
        if row['role'] == 'student' and row['status'] == 'good':
            # 提取score和result列,写入输出文件
            csv_writer.writerow([row['score'], row['result']])

方法二:使用csv.reader(按列索引取值)

如果习惯按列索引操作,可以用这个版本,注意列索引从0开始计数:

import csv

with open('infile.csv', 'r', newline='') as infile, open('outfile.csv', 'w', newline='') as outfile:
    csv_reader = csv.reader(infile)
    csv_writer = csv.writer(outfile)
    
    # 跳过原文件的表头行,避免表头被当作数据处理
    next(csv_reader)
    # 写入新文件的自定义表头
    csv_writer.writerow(['points', 'rank'])
    
    for row in csv_reader:
        # 第0列是role,第1列是status
        if row[0] == 'student' and row[1] == 'good':
            # 提取第2列(score)和第3列(result)
            csv_writer.writerow([row[2], row[3]])

常见失败原因提示

你之前尝试出错可能是以下原因:

  • 未跳过原文件的表头行,导致表头被当作数据行参与条件判断
  • 列索引计数错误(比如把score当成第3列,实际索引从0开始是第2列)
  • 打开文件时未添加newline=''参数,导致输出文件出现多余空行
  • 条件判断的字符串匹配出错(比如存在大小写不一致、多余空格等情况)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:23:38