python文件内容的去重

很多时候我们获取的数据存在大量重复,重复数据在进一步处理时会降低处理效率,且可能导致错误,因此内容去重是数据处理一个重要步骤。

通过list的set()和sort()函数对于数据进行顺序去重,读取文件夹中的所有文件,生成文件列表,读取文件内容列表,进行去重和按原索引顺序排序。

首先我们需要将所有需要去重的文件列举出来,通过os库的walk()函数可以获取路径下的所有文件和路径名

import os
def all_txt(dir1):
    result=[]
    for maindir, subdir, file_name_list in os.walk(dir1):
        #print("1:",maindir) 
        #print("2:",subdir) 
        #print("3:",file_name_list)  
        for filename in file_name_list:
            apath = os.path.join(maindir, filename)
            result.append(apath)
    return result

对于文件中的重复项进行去除的方法,我采用的是先把文件内容输出成列表,在通过set()和sort()函数处理从而得到有序的去重列表

def clr(dir1):
	list1=[]
	with open(dir1,'r') as f:
		while True:
			url=f.readline()
			if url:
				list1.append(url)
			else:
				break
	list2=list(set(list1))
	list2.sort(key=list1.index)
	list1=list2
	n=len(list1)
	with open(dir1,'w') as f:
		while n:
			#print(list1[0])
			f.write(list1[0])
			n=n-1
			del list1[0]


 最后选择需要去重的文件路径就可以了

list3=[]            
list3=all_txt(".\data")
for li in list3:
    clr(li)

 

posted @ 2019-07-15 17:45  btc  阅读(1260)  评论(0编辑  收藏  举报