Python3正则表达式清洗Excel文档,,本项目中虽然数据量不


本项目中虽然数据量不大,用Excel自带的替换功能也能实现,但是针对上几千条字段去匹配数据的话,Python就明显高效的多,现在开始讲解:

要清洗的是Excel文档中所有字段的地名,

技术分享图片

需要清洗数据:

技术分享图片

首先,需要导入xlrd和re包,前者是用来读写Excel文档,后者是正则表达式的包


1 #-*- coding:gbk -*- 2 import xlrd 3 import re 4 5 #打开一个Excel表 6 data = xlrd.open_workbook(‘/home/kin/company.xlsx‘) 7 8 #按顺序选择第5张表(sheet) 9 table = data.sheets()[4]10 11 #循环遍历把表中一列的数据用字符串拼接的形式赋值给字符串变量“temp”12 temp = ""13 for x in range(18):14 #get row_value15 var = table.row_values(x)16 temp +=var[0] + "|"17 18 19 #一定要去除最后一个“|”字符,否则while循环时会认为“空值”完全匹配进入死循环20 temp = temp[:-1]21 22 #新建并打开一个xlsx文档,“w”是选择复写,编译码为utf-823 file = open("/home/kin/Desktop/z.xlsx","w",encoding="utf-8")24 25 #选择第二张表26 table2 = data.sheets()[1]27 28 #编译正则表达式29 pt = re.compile(temp)30 31 32 #可以将num,num2加入循环,print查看num总数,判断是否执行总数33 num = 0 34 num2 = 035 36 #循环遍历37 for x in range(10000):38 #get row_value39 var2 = table2.row_values(x)40 #var2[0]读取每行第一列元素41 while pt.search(var2[0]):42 #group()匹配正则表达式整体结果43 a = pt.search(var2[0]).group()44 #将匹配结果用空字符串替代45 var2[0] = var2[0].replace(a,"")46 #将处理完的结果赋值给name47 name = var2[0]48 #用回车做分隔符写入49 file.write(name + "\n")50 #切记flush()方法必须放在while循环局部,不然结果会将所有运算结果从缓存内写入51 file.flush()52 53 file.close54

结果:

技术分享图片

Python3正则表达式清洗Excel文档

评论关闭