Python中如何使用re.sub()進行字符串替換?

python的re.sub()函數用于正則表達式替換,基本用法是替換固定字符串,如將“apple”替換成“orange”。1.使用正則表達式可替換動態內容,如替換數字為“#number#”。2.常見場景包括清理空格、去除標點、匿名化手機號。3.替換時可用函數動態生成內容,如將數字乘以2。4.注意事項包括大小寫敏感、貪婪匹配、性能問題及分組替換技巧。掌握這些方面可靈活應對多數替換需求。

Python中如何使用re.sub()進行字符串替換?

python中,re.sub() 是一個非常實用的函數,用來通過正則表達式進行字符串替換。它的核心作用就是找到符合某種模式的文本,并替換成你指定的內容。

Python中如何使用re.sub()進行字符串替換?

替換基本字符串

這是最簡單的用法:直接替換固定字符串。
比如你想把一段文字中的“apple”替換成“orange”,就可以這樣寫:

Python中如何使用re.sub()進行字符串替換?

import re  text = "I like apple." new_text = re.sub("apple", "orange", text) print(new_text)  # 輸出:I like orange.

這個方法適用于你知道確切要替換什么內容的情況。但如果你面對的是更復雜的格式,比如不固定的數字、郵箱地址等,就需要用到正則表達式了。


使用正則表達式替換動態內容

re.sub() 的強大之處在于支持正則表達式,可以匹配動態變化的內容。
比如你想把所有的數字替換成“#NUMBER#”,可以這樣做:

Python中如何使用re.sub()進行字符串替換?

text = "The price is 123 dollars." new_text = re.sub(r"d+", "#NUMBER#", text) print(new_text)  # 輸出:The price is #NUMBER# dollars.

這里 d+ 表示一個或多個數字,r”” 表示原始字符串,避免轉義問題。常見場景包括:

立即學習Python免費學習筆記(深入)”;

  • 清理多余空格:re.sub(r”s+”, ” “, text)
  • 去除標點符號:re.sub(r”[^ws]”, “”, text)
  • 匿名化手機號:re.sub(r”1d{10}”, “****”, text)

這類操作在數據清洗和文本預處理時特別有用。


替換時使用函數動態生成內容

有時候你不只是想替換成固定內容,而是希望根據匹配結果動態生成新值。這時你可以傳入一個函數作為替換參數。
例如,將所有數字乘以2:

import re  def double(match):     num = int(match.group(0))     return str(num * 2)  text = "The numbers are 10, 20 and 30." new_text = re.sub(r"d+", double, text) print(new_text)  # 輸出:The numbers are 20, 40 and 60.

這個功能適合做數據轉換、敏感詞脫敏、自定義格式化等任務。關鍵點是你的函數必須接收一個 match 對象,并返回一個字符串。


注意事項和小技巧

使用 re.sub() 時有幾個細節容易忽略:

  • 大小寫敏感:默認區分大小寫,如果不區分,加上 flags=re.IGNORECASE
  • 貪婪匹配:正則默認是貪婪的,可能影響替換范圍,必要時用非貪婪模式(比如 .*?)
  • 性能問題:如果只是簡單替換,不如用 str.replace() 更快
  • 分組替換:可以用 1, 2 等引用捕獲組內容來構造新的替換結果

基本上就這些。掌握這幾個方面,就能靈活應對大多數字符串替換的需求了。

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享