Python 中的字符串替換 | Python 字符串替換 [2022]

已發表: 2021-01-02

在數據清理或文本處理方面,替換 Python 中的字符和字符串是一項至關重要的任務。 您的數據可能存在需要刪除的垃圾字符的格式問題,類別可能存在拼寫問題等。此外,在對基於 NLP 的問題進行文本預處理時,字符串替換是準備文本數據時最基本和最重要的步驟。

在本教程中,我們將介紹多種替換不同類型字符串的方法。 如果您有興趣進入數據科學領域,請查看我們的數據科學認證。 在本教程結束時,您將掌握以下知識:

  • Python 替換()方法
  • 正則表達式 sub() 方法
  • 加入()和過濾器()
  • 替換字符串中的數字數據

目錄

Python 替換()

replace(old_str, new_str, count)方法由 3 個參數組成:

  • old_str:需要替換的字符串或字符串的一部分
  • new_str:需要替換舊字符串的字符串
  • count:需要替換特定字符串的次數

讓我們看幾個例子來理解它的工作原理。

單次更換

Mystr = “這是一個示例字符串”
Newstr = Mystr.replace( 'is' , 'was' )

#輸出:
這是一個示例字符串

如果你還記得,Python 中的字符串是不可變的。 因此,當我們調用 replace 方法時,它實質上是用修改後的數據創建了另一個字符串對象。 此外,我們沒有在上面的例子中指定 count 參數。 如果未指定,replace 方法將替換所有出現的字符串。

多次更換

Mystr = “這是一個示例字符串”
Newsstr = Mystr.replace( “s” , “X” )

#輸出:
ThiX iX 示例 Xstring

多次替換前 n 次出現

如果您只想要前 N 次出現,

Mystr = “這是一個示例字符串”
Newstr = Mystr.replace( “s” , “X” , 3 )

#輸出:
ThiX iX 一個示例字符串

多個字符串替換

在上面的例子中,我們用不同的次數替換了一個字符串。 現在,如果您想替換同一個大字符串中的不同字符串怎麼辦。 我們可以為它編寫一個有效的函數並使用相同的方法完成它。

考慮上面的例子,但現在我們想用“X”替換“h”、“is”和“ng”。

def MultipleStrings (mainStr, strReplaceList, newStr)
# 遍歷要替換的字符串
對於strReplaceList中的元素
# 檢查字符串是否在主字符串中
如果mainStr中的元素:
# 替換字符串
mainStr = mainStr.replace(elem, newStr)

返回mainStr

Mystr = “這是一個示例字符串”
Newstr = MultipleStrings(Mystr, [ 'h' , 'is' , 'ng' ] , "X" )

#輸出:
TX X 樣本 striX

閱讀: Python 教程

用正則表達式替換

Python 的正則表達式是一個專門用於處理文本數據的模塊——無論是查找子字符串、替換字符串還是其他任何事情。 正則表達式具有 sub() 函數可以輕鬆查找和替換/替換子字符串。 讓我們回顧一下它的語法和一些用例。

regex.sub (pattern, replacement, original_string)函數接受 3 個參數:

  • pattern:需要匹配替換的子串。
  • 替換:可以是需要放置到位的字符串,也可以是返回需要放置到位的值的可調用函數。
  • original_string:必須替換子字符串的主字符串。

與替換方法相同,正則表達式還使用修改後的字符串創建另一個字符串對象。 讓我們看幾個工作示例。

刪除空格

空格可以被視為特殊字符並替換為其他字符。 在下面的示例中,我們打算用“X”替換空格。

重新進口
Mystr = “這是一個示例字符串”
# 將 Mystr 中的所有空格替換為 'X'
Newstr = re.sub( r”\s+” , 'X' , Mystr)

#輸出:
ThisXisXaXsampleXstring


正如我們所見,所有的空格都被替換了。 模式由 r”\s+” 給出,表示所有的空白字符。

刪除所有特殊字符

要刪除所有特殊字符,我們將傳遞一個與所有特殊字符匹配的模式。

重新進口
導入字符串
Mystr = “節奏@@&[(000)]%%$@@66isit$$#$%-+Str”
模式 = r'[' + string.punctuation + ']'
# 用 X 替換字符串中的所有特殊字符
Newstr = re.sub(pattern, 'X' , Mystr)

#輸出:
速度XXXXXX000XXXXXXX66isitXXXXXXXStr

刪除子字符串不區分大小寫

在現實生活中的數據中,可能存在相同單詞的多個版本具有不同大小寫字符的情況。 要將它們全部刪除,將所有單詞分開作為模式將無效。 正則表達式 sub() 函數採用標誌re.IGNORECASE 來忽略這些情況。 讓我們看看它是如何工作的。

重新進口
Mystr = “這是一個示例字符串”
# 用不區分大小寫的方法替換字符串中的子字符串
Newstr = re.sub( r'is' , '**' , Mystr, flags=re.IGNORECASE)

#輸出:
Th** ** 樣本 **tring

使用正則表達式刪除多個字符

regex 函數可以輕鬆地從字符串中刪除多個字符。 下面是一個例子。

重新進口
Mystr = “這是一個示例字符串”
模式 = r'[hsa]'
# 從字符串中刪除字符 'h'、's' 和 'a'
Newstr = re.sub(pattern, , Mystr)

#輸出:
標題串

使用 join() 替換

刪除或替換字符的另一種方法是遍歷字符串並根據某些條件檢查它們。

charList = [ 'h' , 's' , 'a' ]
Mystr = “這是一個示例字符串”
# 從字符串中刪除列表中的所有字符
Newstr = .join((elem for elem in Mystr if elem not in charList))

#輸出:
標題串

使用 join() 和 filter() 替換

上面的例子也可以通過使用過濾器功能來完成。

Mystr = “這是一個示例字符串”
charList = [ 'h' , 's' , 'a' ]
# 從字符串中刪除列表中的所有字符
Newstr = “” .join(filter( lambda k: k不在charList , Mystr))

#輸出:
嘗試

必讀:現實世界中令人著迷的 Python 應用程序

替換數字

很多時候,數字數據也存在於字符串中,可能需要作為不同的特徵單獨刪除和處理。 讓我們看幾個例子來看看這些是如何實現的。

使用正則表達式

考慮下面的字符串,我們需要從中刪除數字數據。

Mystr = “20xx 年的示例 string9211”
模式 = r'[0-9]'
# 匹配字符串中的所有數字並用空字符串替換
Newsstr = re.sub(pattern, “” , Mystr)

#輸出:
xx年的樣本字符串

在上面的代碼中,我們使用匹配模式r'[0-9]'來匹配所有數字。

使用 join() 函數

我們還可以迭代字符串並使用isdigit()方法過濾掉數字,該方法對字母返回False

Mystr = “20xx 年的示例 string9211”
# 遍歷字符串中的字符並連接除數字以外的所有字符
Newstr = “” .join ((如果不是item.isdigit ( ) ))

#輸出:
xx年的樣本字符串

使用 join() 和 filter()

同樣,我們也可以將過濾條件放在 filter 函數中,只返回返回True的字符

Mystr = “20xx 年的示例 string9211”

# 從字符串中的字符中過濾所有數字並加入剩餘的字符
Newstr = “” .join(filter( lambda item: not item.isdigit(), Mystr))

#輸出:
xx年的樣本字符串

在你走之前

我們介紹了許多示例,展示了從字符串中刪除或替換字符/空格/數字的不同方法。 我們強烈建議您嘗試更多示例和不同的方法來完成上述示例以及更多您自己的示例。

如果您想了解 Python、數據科學,請查看 IIIT-B 和 upGrad 的數據科學執行 PG 計劃,該計劃是為在職專業人士創建的,並提供 10 多個案例研究和項目、實用的實踐研討會、與行業專家的指導,與行業導師一對一,400 多個小時的學習和頂級公司的工作協助。

Python中的字符串替換方法需要什麼?

當您對其應用數據清理技術時,此功能變得非常有用。 使用此功能可以輕鬆刪除不必要的或亂碼。 替換字符串或字符不僅用於數據清洗,還用於處理 NLP 的問題。
擁有這些類型的方法來處理字符串很重要,因為整個數據科學領域都在處理大量數據。

使用字符串數據類型有什麼好處?

字符串很有用,因為您可以使用這種數據類型輕鬆存儲大量數據。 Python 支持大量有用的方法來對字符串執行操作。 此外,字符串在 Python 中是可變的,這減少了錯誤的產生,而且它們也更便宜。
字符串是 Python 中最常用的內置數據類型之一。 不僅在 python 中,許多其他語言也支持這個作為預定義的數據類型,並支持各種方法對其進行操作。