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

Python入门问题:按文本模式列表过滤CSV行并写入文件

解决CSV筛选不匹配模式行的问题

嘿,作为Python入门用户,你遇到的这个问题其实很常见——多半是判断逻辑搞反了,或者对CSV的列索引理解错了(毕竟Python是从0开始计数的!)。我来一步步帮你搞定:

先理清核心需求

你要保留的是第2列的值不在指定模式列表里的行(比如原CSV的1、3、5行),所以核心逻辑是:遍历每一行,检查第2列是否不属于模式列表,符合条件就写入新文件。

常见错误点排查

你之前的代码没移除匹配行,大概率是这两个原因之一:

  • 把判断条件写反了:用了row[列索引] in 模式列表(这样会保留匹配的行,而不是排除),应该用not in
  • 列索引搞错了:你说的“第2列”在Python的csv模块里对应的是索引1(因为第一列是0),如果写成2就会取到第三列,逻辑自然不对

正确示例代码

我给你写一个完整的、适合入门的示例,用with语句自动管理文件(避免忘记关闭文件的问题):

假设你的模式列表是exclude_patterns = ["value2", "value4"],原CSV文件叫input.csv,要生成的新文件叫output.csv,代码如下:

import csv

# 定义需要排除的模式列表(第2列匹配这些值的行会被过滤掉)
exclude_patterns = ["value2", "value4"]

# 打开原文件和目标文件,用with语句自动处理文件关闭
with open("input.csv", "r", newline="", encoding="utf-8") as infile, \
     open("output.csv", "w", newline="", encoding="utf-8") as outfile:
    
    # 创建CSV读取器和写入器
    reader = csv.reader(infile)
    writer = csv.writer(outfile)
    
    # 遍历每一行
    for row in reader:
        # 检查第2列(索引1)是否不在排除列表中
        if row[1] not in exclude_patterns:
            # 符合条件就写入新文件
            writer.writerow(row)

代码解释

  • newline="":确保CSV文件的换行符在不同系统下都能正确处理
  • encoding="utf-8":避免中文等非ASCII字符出现乱码
  • row[1]:对应你说的“第2列”,因为Python从0开始计数,第一列是row[0],第二列就是row[1]
  • not in:核心判断,确保只有不匹配模式的行才会被写入

测试验证

如果你的input.csv内容是:

行1,value1,数据1
行2,value2,数据2
行3,value3,数据3
行4,value4,数据4
行5,value5,数据5

运行代码后,output.csv里就会保留行1、行3、行5,完全符合你的需求。

额外提示(如果有表头)

如果你的CSV有表头行,想要保留表头的话,只需要先把表头单独写入,再处理数据行:

import csv

exclude_patterns = ["value2", "value4"]

with open("input.csv", "r", newline="", encoding="utf-8") as infile, \
     open("output.csv", "w", newline="", encoding="utf-8") as outfile:
    
    reader = csv.reader(infile)
    writer = csv.writer(outfile)
    
    # 读取并写入表头行
    header = next(reader)
    writer.writerow(header)
    
    # 处理数据行
    for row in reader:
        if row[1] not in exclude_patterns:
            writer.writerow(row)

这样就能完美解决你的问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:36:45