比较两个文本文件并删除python中的重复项

时间:2011-09-24 04:50:36

标签: python text duplicates

我有两个文本文件,file1file2

File1包含一堆随机字词,file2包含我想在file1出现时删除的字词。 有没有办法做到这一点?

我知道我可能应该将自己的尝试包括在脚本中,至少要表现出努力,但说实话,这是可笑的,不会有任何帮助。

如果有人至少可以提示从哪里开始,我们将不胜感激。

2 个答案:

答案 0 :(得分:7)

如果您将单词读入set(每个文件一个),则可以使用set.difference()。如果您不关心输出的顺序,则此方法有效。

如果您关心订单,请将第一个文件读入列表,将第二个文件读入一个集合,然后删除列表中集合中的所有元素。

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']

答案 1 :(得分:6)

得到每个人的话:

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

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

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

如果你想要file1中不在file2中的唯一单词:

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

如果你关心从file1的文本中删除单词

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