Python 實用技巧之正則表達式查找和替換文本的操作方法

 更新時間:2019年08月23日 16:00:54   作者:IT派森   我要評論
這篇文章主要介紹了Python 實用技巧之正則表達式查找和替換文本的操作方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

1、需求

我們想對字符串中的文本做查找和替換。

2、解決方案

對于簡單的文本模式,使用str.replace()即可。

例如:

text='mark ,帥哥,18,183 帥,mark'
print(text.replace('18','19'))
print(text)

運行結果:

mark ,帥哥,19,193 帥,mark
mark ,帥哥,18,183 帥,mark

針對更為復雜的模式,可以使用re模塊中的sub()函數。

實例:將日期格式從“11/28/2018”改為“2018-11-28”

import re
text='今天是:11/28/2018'
print(re.sub(r'(\d+)/(\d+)/(\d+)',r'\3-\1-\2',text))
print(text)

結果:

今天是:2018-11-28
今天是:11/28/2018

sub()的第一個參數是要匹配的模式,第二個參數是要替換的模式。類似的“3”這樣的反斜線加數字表示模式中捕獲組的編號。

如果打算用相同的模式執行重復替換,可以考慮先將模式編譯以獲得更好的性能。

實例:

import re
text='今天是:11/28/2018'
datepat=re.compile(r'(\d+)/(\d+)/(\d+)')
print(datepat.sub(r'\3-\1-\2',text))
print(text)

結果:

今天是:2018-11-28
今天是:11/28/2018

對于更加復雜的情況,可以指定一個替換回調函數。

示例:

import re
from calendar import month_abbr
text='今天是:11/28/2018'
datepat=re.compile(r'(\d+)/(\d+)/(\d+)')

def change_date(m):
  mon_name=month_abbr[int(m.group(1))]
  return '{} {} {}'.format(m.group(3),mon_name,m.group(2))
print(datepat.sub(change_date,text))
print(text)

結果:

今天是:2018 Nov 28
今天是:11/28/2018

替換回調函數的輸入參數是一個匹配對象,由match()和find()返回。用.group()方法來提取匹配中特定的部分。該函數返回替換后的文本。

除了得到替換后的文本外,如果還想知道一共完成了多少次替換,可以使用re.subn()。

示例:

import re
text='今天是:11/28/2018,昨天是11/27/2018'
datepat=re.compile(r'(\d+)/(\d+)/(\d+)')
new_text,n=datepat.subn(r'\3-\1-\2',text)
print(text)
print(new_text)
print(n)

結果:

今天是:11/28/2018,昨天是11/27/2018
今天是:2018-11-28,昨天是2018-11-27

3、分析

除了以上展示的sub()調用之外,關于表達式的查找和替換并沒有什么更多可說的了,最有技巧性的地方就是指定的正則表達式。。

總結

以上所述是小編給大家介紹的Python 實用技巧之正則表達式查找和替換文本的操作方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

相關文章

  • C#正則表達式之Regex類用法詳解

    C#正則表達式之Regex類用法詳解

    正則表達式的本質是使用一系列特殊字符模式,來表示某一類字符串,正則表達式無疑是處理文本最有力的工具,而.NET提供的Regex類實現了驗證正則表達式的方法。
    2015-10-10
  • 正則表達式口訣_學習正則的朋友值得一看

    正則表達式口訣_學習正則的朋友值得一看

    正則表達式是每個程序員繞不開的堡壘,只有把它攻下來。我覺得正則之所以難,第一難是需要記憶,第二難是要求具備抽象邏輯思維。
    2008-06-06
  • 一個特牛的日期時間判斷正則表達式

    一個特牛的日期時間判斷正則表達式

    一個特牛的日期時間判斷正則表達式...
    2006-06-06
  • 正則表達式小結篇

    正則表達式小結篇

    本文是小編給大家收集整理的關于正則表達式小結,非常不錯,具有參考借鑒價值,需要的朋友一起看看吧
    2016-12-12
  • asp email郵箱地址驗證正則表達式

    asp email郵箱地址驗證正則表達式

    剛才說了郵箱驗證先可用js來處理,然后再由asp,php來做,下面我來看看一個asp 郵箱地址驗證正則表達式全新實例吧。
    2010-05-05
  • JS 密碼強度校驗的正則表達式(簡單且好用)

    JS 密碼強度校驗的正則表達式(簡單且好用)

    最近在做一個通行證的項目,在項目中有這樣的需求,注冊模塊中輸入密碼需要顯示密碼強度,今天小編給大家分享JS 密碼強度校驗的正則表達式,簡單好用,需要的朋友參考下
    2017-01-01
  • 讓editplus3 函數模板完全顯示函數

    讓editplus3 函數模板完全顯示函數

    我是常常使用editplus ,主要是它啟動快,文件小,自定義代碼,綠色。發現當用他打開php有一個快捷鍵ctrl+F11可以打開函數列表,也就是文件內所有的函數名會顯示在列表中,雙擊會選中函數,非常方便
    2012-10-10
  • 正則表達式中環視的簡單應用示例【基于java】

    正則表達式中環視的簡單應用示例【基于java】

    這篇文章主要介紹了正則表達式中環視的簡單應用,簡單分析了環視的概念與功能,并基于java給出了正則表達式環視的具體使用技巧,需要的朋友可以參考下
    2017-04-04
  • 正則表達式——匹配規則介紹

    正則表達式——匹配規則介紹

    這篇文章主要介紹了正則表達式——匹配規則介紹,需要的朋友可以參考下
    2016-05-05
  • Python爬蟲正則表達式常用符號和方法

    Python爬蟲正則表達式常用符號和方法

    python語言雖然誕生很久,但是也是最近幾年才火起來的。在python語言中,我們經常會用到python爬蟲的正則表達式,下面小編通過本篇文章給大家介紹python爬蟲正則表達式常用的符號和方法,以及具體用法,感興趣的童鞋快來看看吧
    2015-10-10

最新評論

北京pk赛车人工计划软件手机版