如何用python對一個大的txt文件進行逐行查重,並將查重過的數據存到一個新的txt文件中?
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 內部會自己創建緩衝,避免內存溢出。
如果是非常大的文件,分散式處理。
推薦閱讀: