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)