正則表達式 - 去掉亂碼字符/提取字符串中的中文字符/提取字符串中的大小寫字母 - Python代碼

目錄

1.亂碼符號種類較少,用replace()

2.亂碼字符種類較多,用re.sub()

3.提取字符串中的中文字符

4.提取字符串中的中文字符和數字

5.提取其他


數據清洗的時候一大煩惱就是數據中總有各種亂碼字符,比如!@#¥%……&——+*(){}:“》《?|【】‘;/。,、-=

去掉這些很簡單:

1.亂碼符號種類較少,用replace()

如果只是很少類型的亂碼符號,可以使用replace來替換掉,由於我們只是針對字符串中個別字符進行替換,因此使用str.replace("#","")即可;

#只有一類亂碼字符串
df['name'] = df['name'].str.replace("#","")


#連續多個字符一起替換
df['name'] = df['name'].str.replace("#","").str.replace("&","").str.replace("*","")

2.亂碼字符種類較多,用re.sub()

import re
string = "北京大學beijing985大學@#¥……&{}*@$%)..+_)(	"
string_code = re.sub(u"([^\u4e00-\u9fa5\u0030-\u0039\u0041-\u005a\u0061-\u007a])","",string)
print(string_code )


#輸出:北京大學beijing985大學

這種方法的清洗,我們使用的其實是正則表達式,上述方法是提取了字符串中的中英文和數字,當然你也可以直提取中文,不同字符對應的 unicode 範圍如下所示:

函數 說明
sub(pattern,repl,string) 把字符串中的所有匹配表達式pattern中的地方替換成repl
[^**] 表示不匹配此字符集中的任何一個字符
\u4e00-\u9fa5 漢字的unicode範圍
\u0030-\u0039 數字的unicode範圍
\u0041-\u005a 大寫字母unicode範圍
\u0061-\u007a 小寫字母unicode範圍

 

3.提取字符串中的中文字符

import re
string = "北京大學beijing985大學@#¥……&{}*@$%)..+_)(	"

#提取中文字符
string_code = re.sub(u"([^\u4e00-\u9fa5])","",string)
print(string_code )

#輸出:北京大學大學

4.提取字符串中的中文字符和數字

import re
string = "北京大學beijing985大學@#¥……&{}*@$%)..+_)(	"

#提取中文字符和數字
string_code = re.sub(u"([^\u4e00-\u9fa5\u0030-\u0039])","",string)
print(string_code )

#輸出:北京大學985大學

5.提取其他

至於提取其他字符,可以根據正則表達式的 unicode 範圍,並參照上述三個例子敲代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章