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