W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
你需要以忽略大小寫的方式搜索與替換文本字符串
為了在文本操作時(shí)忽略大小寫,你需要在使用re模塊的時(shí)候給這些操作提供 re.IGNORECASE
標(biāo)志參數(shù)。比如:
>>> text = 'UPPER PYTHON, lower python, Mixed Python'
>>> re.findall('python', text, flags=re.IGNORECASE)
['PYTHON', 'python', 'Python']
>>> re.sub('python', 'snake', text, flags=re.IGNORECASE)
'UPPER snake, lower snake, Mixed snake'
>>>
最后的那個(gè)例子揭示了一個(gè)小缺陷,替換字符串并不會(huì)自動(dòng)跟被匹配字符串的大小寫保持一致。為了修復(fù)這個(gè),你可能需要一個(gè)輔助函數(shù),就像下面的這樣:
def matchcase(word):
def replace(m):
text = m.group()
if text.isupper():
return word.upper()
elif text.islower():
return word.lower()
elif text[0].isupper():
return word.capitalize()
else:
return word
return replace
下面是使用上述函數(shù)的方法:
>>> re.sub('python', matchcase('snake'), text, flags=re.IGNORECASE)
'UPPER SNAKE, lower snake, Mixed Snake'
>>>
譯者注: matchcase('snake')
返回了一個(gè)回調(diào)函數(shù)(參數(shù)必須是 match
對(duì)象),前面一節(jié)一節(jié)提到過,sub()
函數(shù)除了接受替換字符串外,還能接受一個(gè)回調(diào)函數(shù)。
對(duì)于一般的忽略大小寫的匹配操作,簡(jiǎn)單的傳遞一個(gè) re.IGNORECASE
標(biāo)志參數(shù)就已經(jīng)足夠了。但是需要注意的是,這個(gè)對(duì)于某些需要大小寫轉(zhuǎn)換的Unicode匹配可能還不夠,參考2.10小節(jié)了解更多細(xì)節(jié)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: