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

Python如何删除表格文本中不含指定关键词的行(保留表头)

问题原因
  • 原有代码的判断逻辑完全错误:你用两个固定常量field1和'DOG'做等值判断,结果永远为假,自然不会写入任何筛选后的行。
  • 额外调用了一次fin.readline()并直接写入,跳过了第一行数据的判断逻辑,也完全没有用到你定义的getIndex函数来定位Animals列的位置,没有将每行对应列的内容和目标关键词做匹配。
  • 大小写不统一,表头的字段名是首字母大写的Animals,你定义的查找字段是全大写ANIMALS,就算调用getIndex也会匹配不到索引直接报错。
最优实现方案

推荐直接用Python内置的csv模块处理分隔符表格文件,能自动处理分割、空行、异常行等边界情况,代码简洁可维护性高,实现代码如下:

import csv

# 配置参数,可根据需求修改
infile = 'C:/example'
outfile = 'C:/folder/animals'
# 要筛选的列名
target_column = 'Animals'
# 要保留的关键词
target_keyword = 'Dog'
# 字段分隔符
sep = ' '

try:
    with open(infile, 'r', encoding='utf-8') as fin, open(outfile, 'w', encoding='utf-8', newline='') as fout:
        reader = csv.reader(fin, delimiter=sep)
        writer = csv.writer(fout, delimiter=sep)
        
        # 读取并写入表头
        headers = next(reader)
        writer.writerow(headers)
        
        # 获取目标列的索引
        target_col_idx = headers.index(target_column)
        
        # 遍历每行数据筛选
        for row in reader:
            # 跳过空行避免报错
            if not row:
                continue
            # 匹配到关键词就写入输出文件
            if row[target_col_idx] == target_keyword:
                writer.writerow(row)
    print('{0} 创建成功'.format(outfile))
except IOError:
    print('{0} 不存在,请检查输入路径'.format(infile))
except ValueError:
    print('表头中未找到指定列 {0},请检查配置'.format(target_column))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:09:01