我已经从不同的网站爬取了 txt 文件,现在我需要将它们粘贴到一个文件中。来自各个网站的许多行彼此相似。我想删除重复。这是我尝试过的:
import difflib
sourcename = 'xiaoshanwujzw'
destname = 'bindresult'
sourcefile = open('%s.txt' % sourcename)
sourcelines = sourcefile.readlines()
sourcefile.close()
for sourceline in sourcelines:
destfile = open('%s.txt' % destname, 'a+')
destlines = destfile.readlines()
similar = False
for destline in destlines:
ratio = difflib.SequenceMatcher(None, destline, sourceline).ratio()
if ratio > 0.8:
print destline
print sourceline
similar = True
if not similar:
destfile.write(sourceline)
destfile.close()
我将为每个源运行它,并逐行写入同一个文件。结果是,即使我多次为同一个文件运行它,该行总是附加到目标文件中。
编辑:我已经尝试了答案的代码。它仍然很慢。即使我最小化 IO,我仍然需要比较 O(n^2),尤其是当你有 1000 多行时。我每个文件平均有 10,000 行。
还有其他方法可以删除重复项吗?