最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中使用正則表達式替換特定格式的文本

 更新時間:2025年09月08日 15:17:15   作者:xiaopengbc  
在Python中使用正則表達式替換特定格式的文本,主要通過re模塊的sub()和subn()函數(shù)實現(xiàn),本文給大家介紹Python中使用正則表達式替換特定格式的文本,感興趣的朋友一起看看吧

在Python中使用正則表達式替換特定格式的文本,主要通過re模塊的sub()subn()函數(shù)實現(xiàn)。這兩個函數(shù)可以根據(jù)正則表達式模式查找匹配內(nèi)容,并替換為指定的字符串或通過函數(shù)生成的內(nèi)容。

一、核心函數(shù)

  • re.sub(pattern, repl, string, count=0, flags=0)
    • 功能:替換字符串中所有匹配pattern的子串為repl
    • 返回值:替換后的新字符串
    • 參數(shù):
      • pattern:正則表達式模式
      • repl:替換的字符串或回調(diào)函數(shù)
      • string:原始字符串
      • count:最大替換次數(shù)(默認0表示全部限制)
      • flags:正則匹配標志(如re.IGNORECASE忽略大小寫)
  • re.subn(pattern, repl, string, count=0, flags=0)
    • 功能:與sub()類似,但返回(新字符串, 替換次數(shù))的元組

二、常用替換場景示例

1. 基礎(chǔ)替換:固定字符串替換

將匹配的文本替換為固定內(nèi)容。

import re
# 將所有數(shù)字替換為"*"
text = "密碼: 123456, 驗證碼: 789"
result = re.sub(r"\d+", "*", text)
print(result)  # 輸出: 密碼: *, 驗證碼: *
# 限制替換次數(shù)(只替換前1個)
result = re.sub(r"\d+", "*", text, count=1)
print(result)  # 輸出: 密碼: *, 驗證碼: 789

2. 分組替換:利用匹配的分組內(nèi)容

通過()捕獲分組,在替換字符串中用\1、\2等引用分組內(nèi)容(類似變量復(fù)用)。

import re
# 交換姓名格式:" lastName, firstName" → "firstName lastName"
text = "Bond, James; Doe, John"
pattern = r"(\w+), (\w+)"  # 分組1:姓氏,分組2:名字
result = re.sub(pattern, r"\2 \1", text)  # 用\2和\1交換順序
print(result)  # 輸出: James Bond; John Doe
# 格式化日期:"MM/DD/YYYY" → "YYYY-MM-DD"
text = "今天是10/05/2023,昨天是10/04/2023"
pattern = r"(\d{2})/(\d{2})/(\d{4})"  # 分組1:月,分組2:日,分組3:年
result = re.sub(pattern, r"\3-\1-\2", text)
print(result)  # 輸出: 今天是2023-10-05,昨天是2023-10-04

3. 函數(shù)替換:動態(tài)生成替換內(nèi)容

當替換規(guī)則復(fù)雜時,repl可以是一個函數(shù),根據(jù)匹配結(jié)果動態(tài)生成替換內(nèi)容。

import re
# 將數(shù)字乘以2(如"3"→"6","10"→"20")
def double_num(match):
    num = int(match.group())  # 獲取匹配的數(shù)字
    return str(num * 2)
text = "單價: 5, 數(shù)量: 3, 總價: 15"
result = re.sub(r"\d+", double_num, text)
print(result)  # 輸出: 單價: 10, 數(shù)量: 6, 總價: 30
# 敏感信息脫敏:保留手機號前3位和后4位,中間用*代替
def mask_phone(match):
    phone = match.group()
    return phone[:3] + "****" + phone[-4:]
text = "聯(lián)系電話: 13812345678, 備用電話: 19987654321"
result = re.sub(r"1[3-9]\d{9}", mask_phone, text)
print(result)  # 輸出: 聯(lián)系電話: 138****5678, 備用電話: 199****4321

4. 忽略大小寫替換

通過flags=re.IGNORECASE(簡寫re.I)忽略大小寫匹配。

import re
# 將"apple"(不區(qū)分大小寫)替換為"banana"
text = "Apple, APPLE, apple"
result = re.sub(r"apple", "banana", text, flags=re.IGNORECASE)
print(result)  # 輸出: banana, banana, banana

5. 移除特定格式內(nèi)容

將匹配的內(nèi)容替換為空字符串,實現(xiàn)"刪除"效果。

import re
# 移除HTML標簽(如<a>、<div>等)
html = "<h1>標題</h1><p>內(nèi)容</p>"
result = re.sub(r"<.*?>", "", html)  # 匹配所有標簽并替換為空
print(result)  # 輸出: 標題內(nèi)容
# 移除字符串中的所有標點符號
text = "Hello, World! 這是一個示例:test."
result = re.sub(r"[^\w\s]", "", text)  # [^\w\s]匹配非單詞和非空白字符
print(result)  # 輸出: Hello World 這是一個示例 test

三、關(guān)鍵技巧

  1. 使用r前綴:替換字符串建議加r前綴(原始字符串),避免\被轉(zhuǎn)義(如r"\2"正確引用分組2)。
  2. 貪婪與非貪婪匹配:替換時注意模式的匹配范圍,必要時用?啟用非貪婪模式(如.*?匹配盡可能少的字符)。
  3. 預(yù)編譯模式:頻繁替換時,用re.compile()編譯模式提升效率:
    pattern = re.compile(r"\d+")
    result = pattern.sub("*", "A1B2C3")  # 輸出: "A*B*C*"

通過sub()subn(),可以靈活處理各種替換需求,從簡單的固定替換到復(fù)雜的動態(tài)生成替換內(nèi)容,正則表達式都能高效完成。

到此這篇關(guān)于Python中使用正則表達式替換特定格式的文本的文章就介紹到這了,更多相關(guān)python正則表達式替換文本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python函數(shù)高級(命名空間、作用域、裝飾器)

    Python函數(shù)高級(命名空間、作用域、裝飾器)

    這篇文章介紹了Python函數(shù)的高級用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Python中json庫的操作指南

    Python中json庫的操作指南

    JSON是存儲和交換文本信息的語法,類似XML,JSON比XML更小、更快,更易解析,且易于人閱讀和編寫,下面這篇文章主要給大家介紹了關(guān)于Python中json庫的操作指南,需要的朋友可以參考下
    2023-04-04
  • Python?if?else條件語句形式詳解

    Python?if?else條件語句形式詳解

    這篇文章主要介紹了Python?if?else條件語句形式詳解,在?Python?中,可以使用?if?else?語句對條件進行判斷,然后根據(jù)不同的結(jié)果執(zhí)行不同的代碼,這稱為選擇結(jié)構(gòu)或者分支結(jié)構(gòu),接下來小編就根據(jù)情況的不同介紹if?else條件語句形式的不同,需要的朋友可以參考一下
    2022-03-03
  • Python?selenium把歌詞評論做成詞云圖

    Python?selenium把歌詞評論做成詞云圖

    大家好,本篇文章主要講的是Python?selenium把歌詞評論做成詞云圖,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • pyinstaller打包python3.6和PyQt5中各種錯誤的解決方案匯總

    pyinstaller打包python3.6和PyQt5中各種錯誤的解決方案匯總

    pyinstaller是打包python很方便的一個套件,我們可以很輕易地使用他,下面這篇文章主要給大家介紹了關(guān)于pyinstaller打包python3.6和PyQt5中各種錯誤解決的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 用Python編寫一個簡單的FUSE文件系統(tǒng)的教程

    用Python編寫一個簡單的FUSE文件系統(tǒng)的教程

    這篇文章主要介紹了用Python編寫一個簡單的FUSE文件系統(tǒng)的教程,對于數(shù)據(jù)的備份很有幫助,需要的朋友可以參考下
    2015-04-04
  • 詳解tensorflow載入數(shù)據(jù)的三種方式

    詳解tensorflow載入數(shù)據(jù)的三種方式

    這篇文章主要介紹了詳解tensorflow載入數(shù)據(jù)的三種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Python爬蟲實現(xiàn)爬取下載網(wǎng)站數(shù)據(jù)的幾種方法示例

    Python爬蟲實現(xiàn)爬取下載網(wǎng)站數(shù)據(jù)的幾種方法示例

    這篇文章主要為大家介紹了Python爬蟲實現(xiàn)爬取下載網(wǎng)站數(shù)據(jù)的幾種方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • CentOS安裝OpenSSL1.1.1全過程

    CentOS安裝OpenSSL1.1.1全過程

    文章介紹了從頭開始編譯安裝Python3.10的步驟,包括檢查和安裝必要的依賴項、下載并解壓源碼、配置和編譯環(huán)境、創(chuàng)建軟連接以及配置環(huán)境變量,最后驗證安裝是否成功
    2025-03-03
  • Python機器學習NLP自然語言處理基本操作關(guān)鍵詞

    Python機器學習NLP自然語言處理基本操作關(guān)鍵詞

    本文是Python機器學習NLP自然語言處理系列文章,帶大家開啟一段學習自然語言處理 (NLP) 的旅程. 本文主要學習NLP自然語言處理關(guān)鍵詞的操作
    2021-09-09

最新評論

收藏| 四子王旗| 宽甸| 化隆| 肃南| 肃宁县| 白城市| 黄骅市| 达日县| 许昌市| 兴宁市| 夏津县| 苏尼特右旗| 濉溪县| 崇礼县| 新津县| 包头市| 梅州市| 华亭县| 辉南县| 长寿区| 潼关县| 泌阳县| 陆川县| 芜湖县| 巫溪县| 灵武市| 黄大仙区| 京山县| 吉木萨尔县| 无锡市| 若羌县| 南通市| 溧水县| 筠连县| 土默特右旗| 乐陵市| 昭觉县| 盐津县| 同仁县| 固始县|