非常好理解的python re正则表达式入手
文章目錄
- 案例一
- 1.去掉/剔除掉字符串中的某些特定字符
- 2.怎么實現(xiàn)
- 3.從案例中學(xué)習(xí)
- 案例二
- 1.確實字符串是否僅包含某些特定字符
- 2.具體實現(xiàn)
- 3.案例學(xué)習(xí)
- 案例三
- 去掉字符串中的所有表情包
直接寫例子,來入手正則。
案例一
1.去掉/剔除掉字符串中的某些特定字符
目標1:有一行字符串,去掉其中的非中文字符
實現(xiàn)1:keep_chinese()函數(shù)
目標2:有一行字符串,去掉其中的非中文、非英文、非數(shù)字字符
實現(xiàn)2:keep_chinese_and_num_and_eng()函數(shù),用re.compile()和re.sub()
2.怎么實現(xiàn)
import redef keep_chinese(line):pattern = re.compile(r'[^\u4e00-\u9fa5]') #匹配非中文的字符chinese = re.sub(pattern,'',line) #將非中文的替換為空字符return chinesedef keep_chinese_and_num_and_eng(line):"""去除字符串中非中文、非數(shù)字、非英文的字符"""pattern = re.compile(r'[^\u4e00-\u9fa5^a-z^A-Z^0-9]')#匹配非中文、非英文、非數(shù)字的字符new_line = re.sub(pattern, '', line) #將非...的字符替換為空字符return new_line if __name__ == '__main__':line = "(2020, 001, '1號背誦《詠鵝》~~~鵝鵝鵝,曲項向天歌。白毛浮綠水,紅掌撥清波。abc....')"uid = line.split(',')[0]fid = line.split(',')[1]content = line.split(',',2)[2]#注意,split可以設(shè)置分隔兩次print(content)print('------') # new_content = keep_chinese(content)new_content = keep_chinese_and_num_and_eng(content)print(new_content)newline = uid + ',' + fid + ',' + new_content + '\n'輸出:1號背誦詠鵝鵝鵝鵝曲項向天歌白毛浮綠水紅掌撥清波abc
3.從案例中學(xué)習(xí)
1、re庫:正則匹配功能
2、re.compile(r'[^\u4e00-\u9fa5]') #匹配非中文的字符
re.compile(r'[^\u4e00-\u9fa5^a-z^A-Z^0-9]')#匹配非中文、非英文、非數(shù)字的字符
3、re.sub(pattern, '', line)#將非中文的替換為空字符
編譯正則表達式:re.compile()
檢索和替換:re.sub() 參數(shù):pattern正則中的模式字符串,repl用來替換的字符串也可以是函數(shù),string原字符串
4、pattern 模式
[^...]不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符
[0-9] 匹配任何數(shù)字。類似于 [0123456789]
[a-z]匹配任何小寫字母
[a-zA-Z0-9]匹配任何字母及數(shù)字
案例二
1.確實字符串是否僅包含某些特定字符
目標:判斷字符串是否僅包含大小寫字母數(shù)字和“_”“-”。eg.“01-word” “01-03”
實現(xiàn):is_special_str()函數(shù),用re.match()
2.具體實現(xiàn)
# 功能:判斷是否是這樣一個字符串:僅包含大小寫字母數(shù)字和"-""_" def is_special_str(query):flag = Falsepattern = r'[\dA-Za-z\-\_]+$'result = re.match(pattern, query) print(result) # 字符串滿足條件情況下:<_sre.SRE_Match object; span=(0, 7), match='01-word'> 類型:<class '_sre.SRE_Match'># 不滿足條件情況下:Noneif result:flag = True# 當(dāng)result非None時,還能獲取以下信息:print(result.group())print(result.span()) # (0,7) 匹配開始的(起始位置,終止位置)print(result.start()) # 0print(result.end()) # 7# else:# print("不滿足")return flagif __name__ == "__main__":query = "01-word"# query = "01-word世界"if is_special_str(query):print("是")3.案例學(xué)習(xí)
re.match(pattern, string, falgs):
從頭(注意是從0位置來開始匹配)匹配一個符合規(guī)則的字符串
匹配成功返回一個match object對象;不成功則返回None
注意:match()只有在0位置匹配成功的話才有返回,如果不是開始位置匹配成功的話,match()就返回None
pattern:正則模型
string:要匹配的字符串
falgs:匹配模式
match還可以這樣用:
result = re.match("喜歡", "我喜歡你的信息素") # 匹配不到 result = re.match("喜歡", "喜歡你的信息素") # 匹配的到re.search()就都可以:
result = re.search("喜歡", "我喜歡你的信息素") # 匹配的到 result = re.search("喜歡", "喜歡你的信息素") # 匹配的到match()和search()的區(qū)別:
match()函數(shù)只檢測RE是不是在string的開始位置匹配
search() 會掃描整個string查找匹配
案例三
去掉字符串中的所有表情包
import emoji emoji.demojize(str)總結(jié)
以上是生活随笔為你收集整理的非常好理解的python re正则表达式入手的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rtl语言_21个最佳RTL WordP
- 下一篇: 优维助力国内某省级商业银行同城异地灾备自