少說話多寫程式碼之Python學習065——標準模組(re模組)
阿新 • • 發佈:2018-12-21
Python的re模組主要是正則表示式的操作函式。我們看看主要的幾個函式。
首先我們要引入re模組。
import re
compile將包含正則表示式字串建立為物件。
search在目標字串中按照給定的正則表示式匹配結果
match在字串的開始處匹配指定正則表示式
split根據正則表示式分割字串
findall列舉出字串中符合指定正則表示式的所有匹配項
sub將字串中所有符合指定正則表示式的項用另一個項代替
escape將字串中所有特殊正則表示式字元轉義
我們通過如下例子,瞭解下這幾個函式。
compile,search,match函式, smod= re.compile('大[漢唐宋明]') if re.search(smod,'大宋'): print('匹配正確%s' %'大宋') if re.search(smod,'大梁') != True: print('匹配錯誤%s' %'大梁') ming= re.match(smod,'大唐') print(ming)
輸出
匹配正確大宋
匹配錯誤大梁
<_sre.SRE_Match object; span=(0, 2), match='大唐'>
split函式
content = '勸君莫惜金縷衣,勸君惜取少年時。花開堪折直須折,莫待無花空折枝。'
contentArray=re.split('[,。]',content)
print(contentArray)
輸出
['勸君莫惜金縷衣,勸君惜取少年時', '花開堪折直須折', '莫待無花空折枝', '']
字串中有逗號和句號,為了分割為陣列,按照逗號和句號分割。
上面的分割中,也可以指定分割的次數,比如,
content2='天地英雄氣,千秋尚凜然。勢分三足鼎,業復五銖錢。' contentArray2= re.split('[,。]',content2,maxsplit=1) contentArray3 = re.split('[,。]',content2,maxsplit=4) print(contentArray2) print(contentArray3)
輸出
['天地英雄氣', '千秋尚凜然。勢分三足鼎,業復五銖錢。']
['天地英雄氣', '千秋尚凜然', '勢分三足鼎', '業復五銖錢', '']
findall函式
pat='[a-z]+'
text ='how are you? fine! thank you. and you?'
result = re.findall(pat,text)
print(result)
輸出
['how', 'are', 'you', 'fine', 'thank', 'you', 'and', 'you']
將所有符合要求的項都找出來。
sub函式
patsub='{name}' txtsub='Hello {name}' txt = re.sub(patsub,'王維',txtsub) print(txt)
輸出
Hello 王維
這個其實就是我們平時使用的字串替換的一個高階使用,比如我們要把一篇文章中'我'替換為'他',就是一個字元替換為另一個字元。
這裡是按照正則表示式來替換。
escape函式
escape = re.escape('得相能開國,生兒不象賢。淒涼蜀故妓,來舞魏宮前。')
print(escape)
輸出
\得\相\能\開\國\,\生\兒\不\象\賢\。\悽\涼\蜀\故\妓\,\來\舞\魏\宮\前\。
這是將每個字元都轉義了。
工程檔案下載:https://download.csdn.net/download/yysyangyangyangshan/10865919