比较两个文本文件并在Python中移除重复项
我有两个文本文件,file1
和 file2
。
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, "")