Python3正則表達式清洗Excel文檔

本項目中雖然數據量不大,用Excel自帶的替換功能也能實現,可是針對上幾千條字段去匹配數據的話,Python就明顯高效的多,如今開始講解:正則表達式

要清洗的是Excel文檔中全部字段的地名,緩存

須要清洗數據:spa

 

 

首先,須要導入xlrd和re包,前者是用來讀寫Excel文檔,後者是正則表達式的包code


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

 結果:blog

相關文章
相關標籤/搜索