正如標題所說,我想查找並刪除文件中的重複行。這很容易做到......我想知道什麼是最快和最有效的方式來做到這一點(假設您擁有千兆字節的文件,而且您希望這樣做的效率和速度都如此快你可以)查找和刪除文件中的重複行(最快,最有效的方式)
如果你知道一些方法...複雜,因爲它可以做,我想知道。我聽到一些像循環展開的東西,並開始猜測最簡單的東西是最快的,所以我很好奇。
正如標題所說,我想查找並刪除文件中的重複行。這很容易做到......我想知道什麼是最快和最有效的方式來做到這一點(假設您擁有千兆字節的文件,而且您希望這樣做的效率和速度都如此快你可以)查找和刪除文件中的重複行(最快,最有效的方式)
如果你知道一些方法...複雜,因爲它可以做,我想知道。我聽到一些像循環展開的東西,並開始猜測最簡單的東西是最快的,所以我很好奇。
最好的解決方案是保留一組到目前爲止看到的行,並只返回不在其中的行。這種方法適用於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