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

如何用Python提取文件1中不在文件2的邮箱并存入列表?

解决方法

优先推荐用集合处理这类存在性判断问题,效率远高于循环遍历,同时用with语句管理文件能自动释放资源,不用手动调用close:

# 读取accounts.txt的所有非空邮箱到集合(集合查找效率远高于列表)
with open("accounts.txt", "r") as file2:
    accounts_set = {line.strip() for line in file2 if line.strip()}

# 筛选competitor_accounts.txt中不在accounts_set里的邮箱
unique_competitor_emails = []
with open("competitor_accounts.txt", "r") as file1:
    for line in file1:
        email = line.strip()
        # 跳过空行,只保留不在目标集合里的邮箱
        if email and email not in accounts_set:
            unique_competitor_emails.append(email)

# 最终结果列表
print(unique_competitor_emails)

步骤说明

  • 先用集合推导式把accounts.txt里的有效邮箱存入集合,集合的in操作时间复杂度是O(1),数据量大时比列表的O(n)快很多
  • 逐行读取competitor_accounts.txt,处理掉每行的换行符和前后空白,判断邮箱是否不在目标集合中,符合条件就加入结果列表
  • 如果你的文件里存在重复邮箱,还可以给结果列表去重:unique_competitor_emails = list(set(unique_competitor_emails))

如果坚持用你最初考虑的for循环+if方案(适合数据量小的场景),可以这么写:

# 读取file2的邮箱到列表
file2 = open("accounts.txt")
accounts_list = [line.strip() for line in file2 if line.strip()]
file2.close()

# 遍历file1筛选目标邮箱
unique_competitor_emails = []
file1 = open("competitor_accounts.txt")
for line in file1:
    email = line.strip()
    if email and email not in accounts_list:
        unique_competitor_emails.append(email)
file1.close()

print(unique_competitor_emails)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:01:34