2016-11-24 63 views
2

正如标题所说,我想查找并删除文件中的重复行。这很容易做到......我想知道什么是最快和最有效的方式来做到这一点(假设您拥有千兆字节的文件,而且您希望这样做的效率和速度都如此快你可以)查找和删除文件中的重复行(最快,最有效的方式)

如果你知道一些方法...复杂,因为它可以做,我想知道。我听到一些像循环展开的东西,并开始猜测最简单的东西是最快的,所以我很好奇。

+0

可能的重复[如何从文件中删除重复行?](http://stackoverflow.com/questions/1215208/how-might-i-remove-duplicate-lines-from-a-file) –

+0

检查此以及:http://stackoverflow.com/questions/1444406/how-can-i-delete-duplicate-lines-in-a-file-in-unix – MYGz

+0

我没有看到任何答案在你链接的线程处理性能问题。 – sobek

回答

1

最好的解决方案是保留一组到目前为止看到的行,并只返回不在其中的行。这种方法适用于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()) 
0

使用Python hashlib哈希文件到一个唯一的哈希每行...并检查线路是重复查找到哈希在set

行可以直接保存在set中,但散列会减少所需的空间。

相关问题