1. 程式人生 > >Python3正則表達式清洗Excel文檔

Python3正則表達式清洗Excel文檔

utf body any rep 後者 完全 blog print xls

本項目中雖然數據量不大,用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文檔