Python3 - 字符串匹配和替換

問題

在字符串中匹配指定的文本模式并替換

解決方案

對于簡單的字面模式,直接使用 str.replace() 方法即可,比如:

text = 'yeah, but no, but yeah, but no, but yeah'

print(text.replace('yeah', 'yep'))
yep, but no, but yep, but no, but yep

對于復(fù)雜的匹配,需要使用 re 模塊中的 sub() 函數(shù)。 比如: 將11/27/2012 的日期字符串改成 2012-11-27 。示例如下:

import re
text = 'Today is 11/27/2018. PyCon starts 3/13/2018.'
print(re.sub(r'(\d+)/(\d+)/(\d+)', r'\3-\1-\2', text))
Today is 2018-11-27. PyCon starts 2018-3-13.

sub() 函數(shù)中的第一個參數(shù)是匹配模式,第二個參數(shù)是替換模式。反斜杠數(shù)字指向匹配模式中的分組號。

討論

如果除了替換后的結(jié)果外,還想知道替換了多少次,可以使用 re.subn() 來代替。比如:

new_text, n = re.subn(r'(\d+)/(\d+)/(\d+)', r'\3-\1-\2', text)
print(new_text)
print(n)

Today is 2018-11-27. PyCon starts 2018-3-13.
2
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容