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

Python如何实现两个文本文件比对 提取匹配内容写入新文件

Python双文本文件逐行匹配入门实现方案

核心实现思路

你已经掌握单文件读取操作的话,跨文件比对不需要额外学复杂的第三方库,用Python内置的文件操作就能实现,核心逻辑拆成3个非常好理解的步骤:

  • 先读取被检索的第二个文件的所有有效内容,清理格式后存入集合结构——集合的元素查找时间复杂度是O(1),比用列表存快几个量级,文件越大优势越明显
  • 逐行读取待匹配的第一个文件,每读一行就做同样的格式清理,判断该行内容是否存在于刚才的集合中
  • 匹配成功的行直接写入新的结果文件即可,写完所有行后自动关闭文件句柄就完成了

可直接运行的参考代码

全程用Python内置方法实现,不需要安装任何第三方依赖:

# 按需修改为你自己的文件路径
SOURCE_PATH = "第一个待匹配文件.txt"
TARGET_PATH = "第二个被检索文件.txt"
RESULT_PATH = "匹配结果.txt"

# 读取被检索文件的所有有效行存入集合
target_content = set()
with open(TARGET_PATH, "r", encoding="utf-8") as f:
    for raw_line in f:
        # 去掉每行首尾的换行符、多余空格,规避格式差异导致的匹配失败
        clean_line = raw_line.strip()
        if clean_line:  # 跳过空行
            target_content.add(clean_line)

# 逐行匹配并写入结果
with open(SOURCE_PATH, "r", encoding="utf-8") as f_source, \
     open(RESULT_PATH, "w", encoding="utf-8") as f_result:
    for raw_line in f_source:
        clean_line = raw_line.strip()
        if clean_line and clean_line in target_content:
            # 写入时补换行符,避免结果内容挤在同一行
            f_result.write(f"{clean_line}\n")

入门常见问题调整方案

  • 打开文件报编码错误:把代码里的encoding="utf-8"替换为encoding="gbk"即可适配Windows系统默认生成的txt文件
  • 需要模糊匹配:如果不需要整行完全一致,只要第二个文件的某一行包含当前待匹配字符串,就把判断逻辑替换为子串判断即可,注意这种场景下集合查找的优势不生效,适合文件体量不大的场景
  • 不需要清理空格:如果你的匹配逻辑要求严格匹配首尾空格、换行,把所有.strip()调用去掉即可
  • 大文件场景:如果两个文件行数都在十万级以上,当前用集合存储目标内容的方案依然适用,内存占用远低于列表存储,不需要额外做分块读取优化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:24:26