1. 程式人生 > >少說話多寫程式碼之Python學習065——標準模組(re模組)

少說話多寫程式碼之Python學習065——標準模組(re模組)

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