Python中的replace()函數(shù)是字符串操作中常用的函數(shù)之一。replace()函數(shù)可以在一個字符串中查找指定的子串,并將其替換為新的字符串。replace()函數(shù)的基本語法如下:
_x000D_`python
_x000D_str.replace(old, new[, max])
_x000D_ _x000D_其中,str是要進(jìn)行替換操作的字符串,old是要被替換的子串,new是用來替換old的新字符串,max是可選參數(shù),用于指定最多替換幾個old。
_x000D_舉個例子,假設(shè)有一個字符串s,其中包含有多個子串"hello",我們想將其中的所有"hello"都替換為"hi",那么可以使用replace()函數(shù)來實(shí)現(xiàn):
_x000D_`python
_x000D_s = "hello world, hello python, hello everyone"
_x000D_s = s.replace("hello", "hi")
_x000D_print(s)
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_hi world, hi python, hi everyone
_x000D_ _x000D_在上面的代碼中,我們首先定義了一個字符串s,其中包含有多個"hello"子串。然后使用replace()函數(shù)將所有的"hello"都替換為"hi",最后輸出替換后的字符串。
_x000D_除了基本用法之外,replace()函數(shù)還有一些高級用法,下面將對這些用法進(jìn)行詳細(xì)介紹。
_x000D_## 替換指定次數(shù)
_x000D_replace()函數(shù)的第三個參數(shù)max可以用來指定替換的次數(shù)。如果不指定max或者max為-1,那么將會替換所有的old。如果指定了max,那么replace()函數(shù)將只替換前max個old。
_x000D_舉個例子,假設(shè)有一個字符串s,其中包含有多個子串"hello",我們只想將其中的前兩個"hello"替換為"hi",那么可以使用replace()函數(shù)來實(shí)現(xiàn):
_x000D_`python
_x000D_s = "hello world, hello python, hello everyone"
_x000D_s = s.replace("hello", "hi", 2)
_x000D_print(s)
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_hi world, hi python, hello everyone
_x000D_ _x000D_在上面的代碼中,我們將max參數(shù)設(shè)置為2,表示只替換前兩個"hello"。輸出結(jié)果中只有前兩個"hello"被替換為了"hi",而最后一個"hello"保持不變。
_x000D_## 多個替換
_x000D_replace()函數(shù)也可以同時替換多個子串。具體來說,可以將多個子串和對應(yīng)的替換字符串作為一個字典傳遞給replace()函數(shù),函數(shù)將會依次將每個子串替換為對應(yīng)的替換字符串。
_x000D_舉個例子,假設(shè)有一個字符串s,其中包含有多個子串"hello"和"world",我們想將"hello"替換為"hi",將"world"替換為"python",那么可以使用replace()函數(shù)來實(shí)現(xiàn):
_x000D_`python
_x000D_s = "hello world, hello python, hello everyone"
_x000D_d = {"hello": "hi", "world": "python"}
_x000D_for k, v in d.items():
_x000D_s = s.replace(k, v)
_x000D_print(s)
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_hi python, hi python, hi everyone
_x000D_ _x000D_在上面的代碼中,我們首先定義了一個字典d,其中包含有兩個鍵值對,分別表示要替換的子串和對應(yīng)的替換字符串。然后使用for循環(huán)依次將每個子串替換為對應(yīng)的替換字符串,最后輸出替換后的字符串。
_x000D_## 大小寫敏感
_x000D_replace()函數(shù)默認(rèn)是大小寫敏感的。也就是說,如果要替換的子串的大小寫和原字符串中的大小寫不一致,那么replace()函數(shù)將不會進(jìn)行替換。
_x000D_舉個例子,假設(shè)有一個字符串s,其中包含有子串"Hello",我們想將其替換為"Hi",那么可以使用replace()函數(shù)來實(shí)現(xiàn):
_x000D_`python
_x000D_s = "Hello world"
_x000D_s = s.replace("Hello", "Hi")
_x000D_print(s)
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_Hi world
_x000D_ _x000D_在上面的代碼中,我們將"Hello"替換為"Hi",輸出結(jié)果中"Hello"被成功替換為了"Hi"。
_x000D_如果要替換的子串大小寫和原字符串中的大小寫不一致,那么replace()函數(shù)將不會進(jìn)行替換。舉個例子:
_x000D_`python
_x000D_s = "Hello world"
_x000D_s = s.replace("hello", "hi")
_x000D_print(s)
_x000D_ _x000D_輸出結(jié)果仍然為:
_x000D_ _x000D_Hello world
_x000D_ _x000D_在上面的代碼中,我們將"hello"替換為"hi",但是因?yàn)榇笮懖灰恢?,replace()函數(shù)并沒有進(jìn)行替換,輸出結(jié)果和原字符串相同。
_x000D_如果想要replace()函數(shù)不區(qū)分大小寫,可以使用正則表達(dá)式來實(shí)現(xiàn)。
_x000D_## 使用正則表達(dá)式
_x000D_replace()函數(shù)還可以使用正則表達(dá)式來進(jìn)行替換。具體來說,可以將要替換的子串和對應(yīng)的替換字符串作為正則表達(dá)式傳遞給replace()函數(shù),函數(shù)將會使用正則表達(dá)式進(jìn)行替換。
_x000D_舉個例子,假設(shè)有一個字符串s,其中包含有多個子串"hello",我們想將其中的所有"hello"都替換為"hi",但是不區(qū)分大小寫,那么可以使用正則表達(dá)式來實(shí)現(xiàn):
_x000D_`python
_x000D_import re
_x000D_s = "hello world, Hello python, HELLO everyone"
_x000D_s = re.sub("(?i)hello", "hi", s)
_x000D_print(s)
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_hi world, hi python, hi everyone
_x000D_ _x000D_在上面的代碼中,我們使用了re.sub()函數(shù),將要替換的子串"(?i)hello"作為正則表達(dá)式傳遞給函數(shù)。其中,"(?i)"表示忽略大小寫,"hello"表示要替換的子串。函數(shù)將會使用正則表達(dá)式進(jìn)行替換,輸出結(jié)果中所有的"hello"都被成功替換為了"hi"。
_x000D_## Q&A
_x000D_1. replace()函數(shù)能否替換多個子串?
_x000D_答:可以??梢詫⒍鄠€子串和對應(yīng)的替換字符串作為一個字典傳遞給replace()函數(shù),函數(shù)將會依次將每個子串替換為對應(yīng)的替換字符串。
_x000D_2. replace()函數(shù)是否區(qū)分大小寫?
_x000D_答:默認(rèn)情況下,replace()函數(shù)是區(qū)分大小寫的。如果要不區(qū)分大小寫,可以使用正則表達(dá)式來實(shí)現(xiàn)。
_x000D_3. replace()函數(shù)能否替換指定次數(shù)?
_x000D_答:可以。replace()函數(shù)的第三個參數(shù)max可以用來指定替換的次數(shù)。如果不指定max或者max為-1,那么將會替換所有的old。如果指定了max,那么replace()函數(shù)將只替換前max個old。
_x000D_4. replace()函數(shù)能否替換空字符串?
_x000D_答:可以。如果要將一個字符串中的所有空格都替換為"_",可以使用replace()函數(shù)實(shí)現(xiàn):
_x000D_`python
_x000D_s = "hello world"
_x000D_s = s.replace(" ", "_")
_x000D_print(s)
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_hello_world
_x000D_ _x000D_在上面的代碼中,我們將空格替換為"_",輸出結(jié)果中所有的空格都被成功替換為了"_"。
_x000D_