Python 查找和删除文件中的重复行(最快、最有效的方法)
正如标题所说,我想查找并删除文件中的重复行。这很容易做到……关键是我想知道最快、最有效的方法是什么(假设你有千兆字节的文件,你想尽可能高效、快速地做到这一点)Python 查找和删除文件中的重复行(最快、最有效的方法),python,Python,正如标题所说,我想查找并删除文件中的重复行。这很容易做到……关键是我想知道最快、最有效的方法是什么(假设你有千兆字节的文件,你想尽可能高效、快速地做到这一点) 如果你知道一些方法…复杂到我想知道的程度。我听到了一些类似循环展开的东西,并开始猜测最简单的事情是最快的,所以我很好奇。最好的解决方案是保留一组迄今为止看到的行,并只返回不在其中的行。这种方法在python的集合实现中使用 def unique_lines(filename): lines = open(filename).read
如果你知道一些方法…复杂到我想知道的程度。我听到了一些类似循环展开的东西,并开始猜测最简单的事情是最快的,所以我很好奇。最好的解决方案是保留一组迄今为止看到的行,并只返回不在其中的行。这种方法在python的集合实现中使用
def unique_lines(filename):
lines = open(filename).readlines()
seen = set()
for line in lines:
if line not in seen:
yield line
seen.add(line)
然后
for unique_line in unique_lines(filename)
# do stuff
当然,如果不关心顺序,可以直接将整个文本转换为一个集合,如
set(open(filename).readlines())
使用python
hashlib
将文件中的每一行散列为唯一的散列。。。并检查一行是否重复,查找集中的哈希值
行可以直接保存在集中
,但是,散列将减少所需的空间
检查此问题的可能重复:我在您链接的线程中没有看到任何关于性能问题的答案。请将您的问题显示出来。你应该包括一个你有问题的代码,然后我们可以尝试帮助解决具体的问题。您还应该阅读。如果使用python不严格要求,那么uniq file\u with\u dupes>file\u without\u dupes
可能是最简单、最快的方法。难道不会打开(filename).readlines()
在内存中创建一个包含所有行的列表吗?这似乎并不缺乏记忆。您可以这样做:f=open(filename);对于f中的行:…
。另外,处理文件时最好使用with
语句。