比较两个文本文件并在Python中移除重复项

1 投票
2 回答
8372 浏览
提问于 2025-04-17 02:58

我有两个文本文件,file1file2

file1 里面有一堆随机的单词,而 file2 里面是我想从 file1 中删除的单词。如果这些单词出现的话,有没有办法做到这一点呢?

我知道我应该至少提供一下我自己写的脚本,来显示我有努力过,但老实说,我的尝试实在是太可笑了,根本没什么帮助。

如果有人能给我一点建议,告诉我从哪里开始,那我会非常感激。

2 个回答

7

如果你把每个文件里的单词读进一个set(每个文件一个),你可以使用set.difference()来找出不同的部分。这种方法适合你不在乎输出的顺序。

如果你在乎顺序的话,可以先把第一个文件的内容读进一个列表,然后把第二个文件的内容读进一个set,接着把列表中在set里的元素去掉。

a = ["a", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"]
b = {"quick", "brown"}
c = [x for x in a if not x in b]
print c

这样得到的结果是:['a', 'fox', 'jumped', 'over', 'the', 'lazy', 'dog']

9

从每个文件中获取单词:

f1 = open("/path/to/file1", "r") 
f2 = open("/path/to/file2", "r") 

file1_raw = f1.read()
file2_raw = f2.read()

file1_words = file1_raw.split()
file2_words = file2_raw.split()

如果你想要从文件1中找出那些不在文件2里的独特单词:

result = set(file1_words).difference(set(file2_words))

如果你想要把文件1中的单词从文本中去掉:

for w in file2_words:
    file1_raw = file1_raw.replace(w, "")

撰写回答