如何用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 内部会自己创建缓冲,避免内存溢出。
如果是非常大的文件,分散式处理。
推荐阅读: