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

如何用Python脚本基于邮件列表过滤CSV文件指定列

Python实现CSV邮件匹配过滤脚本

实现思路

  1. 读取待匹配的邮件列表文件,将邮件地址存入集合(集合查找效率远高于列表,适合大规模数据场景)
  2. 读取原始CSV文件,逐行检查每条记录的e-mail字段是否在邮件集合中
  3. 将符合条件的记录(包括表头)写入新的CSV文件

完整脚本代码

import csv

# 配置文件路径,根据实际情况修改
INPUT_CSV = "original_data.csv"
EMAIL_LIST_FILE = "email_list.txt"
OUTPUT_CSV = "filtered_data.csv"

def filter_csv_by_emails():
    # 读取邮件列表到集合
    email_set = set()
    with open(EMAIL_LIST_FILE, 'r', encoding='utf-8') as f:
        for line in f:
            # 去除换行符和首尾空格,避免匹配错误
            email = line.strip()
            if email:  # 跳过空行
                email_set.add(email)
    
    # 读取原始CSV并过滤写入新文件
    with open(INPUT_CSV, 'r', encoding='utf-8') as infile, \
         open(OUTPUT_CSV, 'w', encoding='utf-8', newline='') as outfile:
        
        reader = csv.DictReader(infile)
        writer = csv.DictWriter(outfile, fieldnames=reader.fieldnames)
        
        # 写入表头
        writer.writeheader()
        
        # 遍历每条记录,匹配则写入
        for row in reader:
            if row['e-mail'] in email_set:
                writer.writerow(row)

if __name__ == "__main__":
    filter_csv_by_emails()
    print("过滤完成,结果已保存到", OUTPUT_CSV)

关键细节说明

  • 使用csv.DictReader和csv.DictWriter可直接通过字段名(如row['e-mail'])访问列数据,无需关心列位置,代码更易维护
  • 邮件列表文件支持TXT或单列CSV(代码按行读取,自动忽略空行)
  • 加入strip()处理邮件地址,避免因换行符、空格导致的匹配失败
  • 设置newline=''可避免Windows系统下写入CSV时出现多余空行

测试示例

将你提供的示例数据分别保存为:

  • original_data.csv(原始完整CSV内容)
  • email_list.txt(待匹配邮件列表)

运行脚本后,filtered_data.csv会生成期望的结果:

name,e-mail,status
Mary,mary_mail,2
Louis,louis_mail,2
Frank,frank_mail,2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:06:41