正如标题所说,我想查找并删除文件中的重复行。这很容易做到......我想知道什么是最快和最有效的方式来做到这一点(假设您拥有千兆字节的文件,而且您希望这样做的效率和速度都如此快你可以)查找和删除文件中的重复行(最快,最有效的方式)
如果你知道一些方法...复杂,因为它可以做,我想知道。我听到一些像循环展开的东西,并开始猜测最简单的东西是最快的,所以我很好奇。
正如标题所说,我想查找并删除文件中的重复行。这很容易做到......我想知道什么是最快和最有效的方式来做到这一点(假设您拥有千兆字节的文件,而且您希望这样做的效率和速度都如此快你可以)查找和删除文件中的重复行(最快,最有效的方式)
如果你知道一些方法...复杂,因为它可以做,我想知道。我听到一些像循环展开的东西,并开始猜测最简单的东西是最快的,所以我很好奇。
最好的解决方案是保留一组到目前为止看到的行,并只返回不在其中的行。这种方法适用于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
哈希文件到一个唯一的哈希每行...并检查线路是重复查找到哈希在set
行可以直接保存在set
中,但散列会减少所需的空间。
可能的重复[如何从文件中删除重复行?](http://stackoverflow.com/questions/1215208/how-might-i-remove-duplicate-lines-from-a-file) –
检查此以及:http://stackoverflow.com/questions/1444406/how-can-i-delete-duplicate-lines-in-a-file-in-unix – MYGz
我没有看到任何答案在你链接的线程处理性能问题。 – sobek