如何逐行对比两个文本文件并将不匹配行写入新文件?
逐行对比两个文本文件并提取不匹配行
需求是对比两个文本文件的每一行,把仅在其中一个文件出现的行(两边不匹配的行)写入输出文件。
示例文件内容
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
相关产品推荐
相关产品推荐

