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

如何逐行对比两个文本文件并将不匹配行写入新文件?

逐行对比两个文本文件并提取不匹配行

需求是对比两个文本文件的每一行,把仅在其中一个文件出现的行(两边不匹配的行)写入输出文件。

示例文件内容

file_1.txt:

000b423573 bdbaskbjejbajbkjfsjba
00036713dc sjgdjgdgdjadgygdeg263
00123fd351 heqgrg63u1quidg87gduq
0105517f52 vgfeeyguuiduiueyruuur

file_2.txt:

000b423573 bdbaskbjejbajbkjfsjba
7736001772 absjueui3ryhfuhuffh3u
00123fd351 heqgrg63u1quidg87gduq

期望输出output.txt:

00036713dc sjgdjgdgdjadgygdeg263
7736001772 absjueui3ryhfuhuffh3u
0105517f52 vgfeeyguuiduiueyruuur

现有代码问题

你写的代码只提取了file_1.txt独有、file_2.txt没有的行,漏掉了file_2.txt独有的行;另外fout.write(new_1 - new_2)会直接报错,因为write方法只接受字符串,不能直接传入集合对象。

修正后的代码

new_1 = set()
new_2 = set()

with open('file_1.txt', 'r') as f:
    for line in f:
        new_1.add(line.strip())

with open('file_2.txt', 'r') as f:
    for line in f:
        new_2.add(line.strip())

# 取两个集合的对称差集,即仅在单个文件中出现的行
diff_lines = new_1 ^ new_2

with open('output.txt', 'w') as fout:
    # 给每行加上换行符后写入文件
    for line in diff_lines:
        fout.write(line + '\n')

说明

  • new_1 ^ new_2是Python集合的对称差集操作,能一次性获取所有仅在其中一个文件出现的行,完全匹配需求。
  • 遍历差集元素并手动添加换行符,保证输出文件的每行格式和原文件一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:40:32