如标题所示,我想查找和删除文件中的重复行。这样做很容易...这里的陷阱是我想知道最快,最高效的方法是什么(假设您拥有千兆字节的文件,并且您想像您可以)

如果您知道某种方法...那么复杂,那是我想知道的。我听到了诸如循环展开之类的东西,然后开始猜测最简单的东西是最快的,所以我很好奇。

最佳答案

最好的解决方案是保留到目前为止看到的一组行,并仅返回其中未包含的行。 python的collections实现中使用了这种方法

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 - 查找和删除文件中的重复行(最快,最有效的方式),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40790260/

10-12 19:24