Python3正则表达式清洗Excel文档

Posted tangh4

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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_value 15 var = table.row_values(x) 16 temp +=var[0] + "|" 17 18 19 #一定要去除最后一个“|”字符,否则while循环时会认为“空值”完全匹配进入死循环 20 temp = temp[:-1] 21 22 #新建并打开一个xlsx文档,“w”是选择复写,编译码为utf-8 23 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 = 0 35 36 #循环遍历 37 for x in range(10000): 38 #get row_value 39 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 #将处理完的结果赋值给name 47 name = var2[0] 48 #用回车做分隔符写入 49 file.write(name + "\\n") 50 #切记flush()方法必须放在while循环局部,不然结果会将所有运算结果从缓存内写入 51 file.flush() 52 53 file.close 54

 结果:

技术分享图片

 


以上是关于Python3正则表达式清洗Excel文档的主要内容,如果未能解决你的问题,请参考以下文章

数据清洗记录2

数据清洗 常用正则表达式大全

windows下python3 使用cx_Oracle,xlrd插件进行excel数据清洗录入

csv文件数据清洗

正则表达式UltraEdit / MySQL / 数据清洗

正则表达式UltraEdit / MySQL / 数据清洗