日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python正则表达式之修改,分割,搜索和替换字符串(6)

發(fā)布時間:2025/3/21 python 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python正则表达式之修改,分割,搜索和替换字符串(6) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 修改字符串
    • 分割字符串:
    • 搜索和替換

修改字符串

我們已經(jīng)介紹完如何對字符進行搜索,接下來我們講講正則表達式如何修改字符串

正則表達式使用以下方法修改字符串:

方法用途
split()在正則表達式匹配的地方進行分割,并返回一個列表
sub()找到所有匹配的子字符串,并替換為新的內(nèi)容
subn()跟 sub() 干一樣的勾當,但返回新的字符串以及替換的數(shù)目

分割字符串:

正則表達式的 split() 方法將字符串在匹配的地方進行分割,并將分割后的結(jié)果作為列表返回。它的做法其實很像字符串的 split() 方法,但這個可以使用更加廣泛的分隔符。你猜的沒錯,它同時提供了一個模塊級別的函數(shù):re.split()

.split(string[, maxsplit=0])

通過正則表達式匹配來分割字符串。如果在 RE 中,你使用了捕獲組,那么它們的內(nèi)容會作為一個列表返回。你可以通過傳入一個 maxsplit 參數(shù)來設(shè)置分割的數(shù)量。如果 maxsplit 的值是非 0,表示至多有 maxsplit 個分割會被處理,剩下的內(nèi)容作為列表的最后一個元素返回。

下邊例子中,分隔符是任何非字母數(shù)字字符

>>> p = re.compile(r'\W+') >>> p.split('This is a test, short and sweet, of split().') ['This', 'is', 'a', 'test', 'short', 'and', 'sweet', 'of', 'split', ''] >>> p.split('This is a test, short and sweet, of split().', 3) ['This', 'is', 'a', 'test, short and sweet, of split().']

有時候你可能不僅對分隔符之間的內(nèi)容感興趣,你可能對分隔符本身(就是正則表達式匹配的內(nèi)容)也同樣感興趣。如果使用了捕獲組,那么作為分隔符的值也會被返回:

>>> p = re.compile(r'\W+') >>> p2 = re.compile(r'(\W+)') >>> p.split('This... is a test.') ['This', 'is', 'a', 'test', ''] >>> p2.split('This... is a test.') ['This', '... ', 'is', ' ', 'a', ' ', 'test', '.', '']

模塊級別的函數(shù) re.split() 除了將 RE 作為第一個參數(shù)外,其他參數(shù)是一樣的:

>>> re.split('[\W]+', 'Words, words, words.') ['Words', 'words', 'words', ''] >>> re.split('([\W]+)', 'Words, words, words.') ['Words', ', ', 'words', ', ', 'words', '.', ''] >>> re.split('[\W]+', 'Words, words, words.', 1) ['Words', 'words, words.']

搜索和替換

另一個常見的任務(wù)就是找到所有的匹配部分,并替換成不同的字符串。sub 方法可以幫你實現(xiàn)這個愿望!sub 方法有一個 replacement 參數(shù),它可以是一個待替換的字符串,或者一個處理字符串的函數(shù)。

.sub(replacement, string[, count=0])

返回一個字符串,這個字符串從最左邊開始,所有 RE 匹配的地方都替換成 replacement。如果沒有找到任何匹配,那么返回原字符串。

可選參數(shù) count 指定最多替換的次數(shù),必須是一個非負值。默認值是 0,意思是替換所有找到的匹配。

下邊是使用 sub() 方法的例子,它會將所有的顏色替換成 color:

>>> p = re.compile( '(blue|white|red)') >>> p.sub( 'colour', 'blue socks and red shoes') 'colour socks and colour shoes' >>> p.sub( 'colour', 'blue socks and red shoes', count=1) 'colour socks and red shoes'

subn() 方法跟 sub() 方法干同樣的勾當,但區(qū)別是返回值為一個包含有兩個元素的元組:一個是替換后的字符串,一個是替換的數(shù)目

>>> p = re.compile( '(blue|white|red)') >>> p.subn( 'colour', 'blue socks and red shoes') ('colour socks and colour shoes', 2) >>> p.subn( 'colour', 'no colours at all') ('no colours at all', 0)

空匹配只有在它們沒有緊挨著前一個匹配時才會被替換掉:

>>> p = re.compile('x*') >>> p.sub('-', 'abxd') '-a-b-d-'

如果 replacement 參數(shù)是一個字符串,那么里邊的反斜杠都會被處理。比如 \n 將會被轉(zhuǎn)換成一個換行符,\r 轉(zhuǎn)換成回車,等等。未知的轉(zhuǎn)義如 \j 保持原樣。逆向引用如 \6,則被 RE 中相應(yīng)的捕獲組匹配的內(nèi)容所替換。這使你可以在替換后的字符串中插入一部分原字符串。

下邊例子中,將匹配被 { 和 } 括起來的單詞 section,并將 section 替換成 subsection:

>>> p = re.compile('section{ ( [^}]* ) }', re.VERBOSE) >>> p.sub(r'subsection{\1}','section{First} section{second}') 'subsection{First} subsection{second}'

這里開啟了 re.VERBOSE,空格將被忽略。因為這里一堆符號,用空格隔開看著才不會亂糟糟的…2. 這里 r'subsection{\1}' 使用 \1 引用匹配模式中的 ([^}]*) 匹配的字符串內(nèi)容。

還可以使用 Python 的擴展語法 (?P<name>...) 指定命名組,引用命名組的語法是 \g<name>。\g<name> 會將名字為 name 的組匹配的字符串替換進去。另外,\g<數(shù)字> 是通過組的序號進行引用。\g<2> 其實就相當于 \2,但我們更提倡使用 \g<2>,因為這樣可以避免歧義。例如,\g<2>0 的含義是引用序號為 2 的組,然后后邊匹配一個字符 '0',而你寫成 \20 就會被認為是引用序號為 20 的組了。

>>> p = re.compile('section{ (?P<name> [^}]* ) }', re.VERBOSE) >>> p.sub(r'subsection{\1}','section{First}') 'subsection{First}' >>> p.sub(r'subsection{\g<1>}','section{First}') 'subsection{First}' >>> p.sub(r'subsection{\g<name>}','section{First}') 'subsection{First}'

有時候你可能不滿足簡單的字符串替換,你可能需要在替換的過程中動點“手腳”…沒關(guān)系,一樣可以滿足你!replacement 參數(shù)還可以是一個函數(shù),該函數(shù)將會在正則表達式模式每次不重復(fù)匹配的時候被調(diào)用。在每次調(diào)用時,函數(shù)會收到一個匹配對象的參數(shù),因此你就可以利用這個對象去計算出新的字符串并返回它。

下邊的例子中,替換函數(shù)將十進制數(shù)替換為十六進制數(shù):

>>> def hexrepl(match): ... "Return the hex string for a decimal number" ... value = int(match.group()) ... return hex(value) ... >>> p = re.compile(r'\d+') >>> p.sub(hexrepl, 'Call 65490 for printing, 49152 for user code.') 'Call 0xffd2 for printing, 0xc000 for user code.'

當使用模塊級的 re.sub() 函數(shù)時,正則表達式模式作為第一個參數(shù)。該模式可以是一個字符串一個編譯好的對象。如果你需要指定正則表達式標志,那么你必須使用后者;或者使用模式內(nèi)嵌修正器,例如 sub("(?i)b+", "x", "bbbb BBBB") 返回 'x x'。

總結(jié)

以上是生活随笔為你收集整理的Python正则表达式之修改,分割,搜索和替换字符串(6)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国内视频精品 | 一区二区视频免费观看 | 亚洲va在线观看 | 亚洲国语 | 天天爽天天爱 | 国产精品高潮呻吟久久久久久 | 一区二区三区视频免费视 | 精品国产乱码久久久久久婷婷 | 国产精品久久久久久久蜜臀 | 啪啪的网站 | 麻豆日产六区 | 女性生殖扒开酷刑vk | 国产100页| 台湾男男gay做爽爽的视频 | 99re视频精品 | 国产一区二区日韩 | 亚洲综合视频网 | 你懂的视频在线播放 | 亚洲国产成人精品视频 | 美女被叉叉的影院 | 欧美高清不卡 | 欧美999 | 夜夜久久 | 特级毛片a | 欧美激情电影一区二区 | 成人午夜精品福利免费 | av在线免费观看不卡 | 国产成人h| 欧美性猛交xxxx免费看 | 在线中文字幕播放 | 麻豆91av | 黄色av网页 | 久久亚洲AV成人无码国产人妖 | 日韩一区二区免费播放 | 国产精品久久久久久久久久小说 | 农村偷人一级超爽毛片 | 国产毛片毛片毛片 | jzzjzzjzz亚洲成熟少妇 | 久久久久亚洲av无码麻豆 | 亚洲porn| 在线成人一区二区 | 亚洲中文字幕一区二区在线观看 | 日韩一区二区三区在线观看视频 | 每日在线更新av | 久久精工是国产品牌吗 | 91人人视频| 特级丰满少妇一级aaaa爱毛片 | 成人做爰www看视频软件 | 欧美浪妇xxxx高跟鞋交 | 性猛交ⅹxxx富婆video | 欧美无遮挡高潮床戏 | 看片日韩 | 欧美色图五月天 | 在线电影一区二区三区 | 日韩精品一区二区三区不卡 | 久久久久久久久久久综合 | 国产一区二区三区播放 | 99热免费在线观看 | 亚洲永久免费 | www.777含羞草 | 长篇乱肉合集乱500小说日本 | 日韩欧美国产电影 | 黑人极品videos精品欧美裸 | 一区二区三区不卡视频在线观看 | 日本久色 | 野花视频在线免费观看 | 国产顶级毛片 | 肉色欧美久久久久久久免费看 | www.桃色av嫩草.com | 色噜噜在线 | 男人疯狂高潮呻吟视频 | 黄色一级a毛片 | 艳妇臀荡乳欲伦交换在线看 | www,五月天,com| 在线a网 | a久久久久 | 少妇看片 | 久久综合九色综合欧美狠狠 | 亚欧精品在线观看 | 日本激情一区 | 亚洲天堂精品在线观看 | 蜜臀av一区二区三区激情综合 | 午夜精品网 | 天天撸在线视频 | 色婷婷国产精品久久包臀 | 可以看av的网站 | 欧美在线91 | 四虎免费在线观看 | 亚洲一区二区三区91 | 丁香免费视频 | 日韩av免费一区 | 欧美精品一线 | aaaa级片| 国产人成视频在线观看 | jizz韩国| 一区二区精 | 91操视频| 日韩毛片av| 日韩av电影中文字幕 |