1、如果文件在1G 左右,內存大的話,直接用字典。讀一行處理一行。

2、如果文件大,可以切分為小文件,按照1 的方式處理,將沒有重複的小文件合併再處理一次。


如果txt文件不是很大,可以將文件全部讀到內存中然後查重,如果txt很大最好使用資料庫。


可以這樣,逐行,以文本的hash值做key,如果重複了就從dict中刪掉,最終將dict輸出


用sqlcel的「刪除重複項」功能可對txt文本刪重。圖形化界面使用起來很簡單。

選擇一個或多個欄位然後點擊「確定」即可完成。如下:

10G的文本支持起來也沒問題,速度很快。


如果用open(FileName).read(),文件很大將爆滿內存,

不過,不是提供了另外一個方法。

with open(FileName) as f:

for line in f.readlines():

//這個line就是每一行的數據,你可以對這個line進行hash作為key,line作為value.這裡你可以重新打開一個文件,將這個line寫進去

這樣子就省內存啦


如果只是逐行比重,那就每行算MD5,然後算MD5的重複值。做Hash就成了


就演算法而言,

直接按行讀取文件,然後計算每行的hash值作為key,如果key已經存在並且value不為空,就說明跟之前的重複了;否則,說明是第一次出現,就輸出到新的文件中,並且將hash值作為key,插入字典中。直到文件結束。

處理大文件的方法就是直接

with open(fileName,r) as f:

for lines in f:

然後python 內部會自己創建緩衝,避免內存溢出。

如果是非常大的文件,分散式處理。


推薦閱讀:
相关文章