您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決文章都會有所收獲,下面我們一起來看看吧。
在前面說的的字符串替換,是將字符串中的一個子串替換成了新的子串,如果我們想對字符串中的某些字符進行轉(zhuǎn)換,也就是對字符串中的單個字符進行替換,可以調(diào)用方法maketrans和translate來實現(xiàn)。
首先調(diào)用maketrans方法創(chuàng)建一個轉(zhuǎn)換表,在轉(zhuǎn)換表中聲明要將那些字符轉(zhuǎn)換成什么字符,然后將創(chuàng)建的轉(zhuǎn)換表作為參數(shù)傳給translate方法,實現(xiàn)字符的轉(zhuǎn)換。
maketrans方法創(chuàng)建轉(zhuǎn)換表的語法:
str.maketrans('轉(zhuǎn)換的字符', '轉(zhuǎn)換后的字符','刪除的字符')
maketrans方法可以傳入三個參數(shù):
第一個參數(shù)用于指定被轉(zhuǎn)換的字符,如果指定了多個字符,那么轉(zhuǎn)換后的字符也需要指定多個,且數(shù)量都要相同,被轉(zhuǎn)換的第一個字符會轉(zhuǎn)換成第二個參數(shù)中的第一個字符,案例中會說明。
第二個參數(shù)用于指定轉(zhuǎn)換后的字符。
第三個參數(shù)用于指定刪除那些字符。
定義好一個轉(zhuǎn)換表之后,使用print可以打印這個轉(zhuǎn)換表的內(nèi)容,此時返回的是一個字典,字典中的每個key:value都是字符對應(yīng)的ordinal value值。
translate方法將轉(zhuǎn)換表當做參數(shù)傳入,再被定義的字符串調(diào)用,最終實現(xiàn)字符的轉(zhuǎn)換。
1)轉(zhuǎn)換表的創(chuàng)建
定義轉(zhuǎn)換表時,如果指定了多個被轉(zhuǎn)換的字符,那么轉(zhuǎn)換后的字符數(shù)量要與被轉(zhuǎn)換的字符數(shù)量相同,此時第一個參數(shù)和第二個參數(shù)會交叉轉(zhuǎn)換,代碼如下。
contable = str.maketrans('agx', '789') print(contable) ''' 代碼解釋: str.maketrans('agx', '789')定義了一個轉(zhuǎn)換表,其中字符a轉(zhuǎn)換成字符7,字符g轉(zhuǎn)換成字符8,字符x轉(zhuǎn)換成字符9 當使用print函數(shù)打印定義的轉(zhuǎn)換表時,返回的是一個字典,key是被轉(zhuǎn)換的字符,value是轉(zhuǎn)換后的字符,并且返回的是字符的ordinal value值 返回結(jié)果:{97: 55, 103: 56, 120: 57} {97是字符a: 55是字符7, 103是字符g: 56是字符8, 120是字符x: 57是字符9} '''
可以使用print函數(shù)打印轉(zhuǎn)換表,返回結(jié)果是一個字典,在字典中的值是對應(yīng)字符的ordinal value值,在字典中可以明確的看到什么字符會被轉(zhuǎn)換成什么字符,如下圖,97是字符a,55是字符7,97對應(yīng)的字符會轉(zhuǎn)換成55對應(yīng)的字符。
除了直接以字符串的形式聲明被轉(zhuǎn)換字符和轉(zhuǎn)換后字符的原始值外,還可以使用字典的方法聲明轉(zhuǎn)換與被轉(zhuǎn)換的字符,因為轉(zhuǎn)換表返回的結(jié)果就是一個字典,但是用的最普遍的方法還是直接在轉(zhuǎn)換表中聲明被轉(zhuǎn)換的字符。
#使用字典的形式,在字典中聲明轉(zhuǎn)換的字符、被轉(zhuǎn)換字符的原始值 contable = str.maketrans({'a': '7', 'g': '8', 'x': '9'}) print(contable) ''' 此時使用print打印轉(zhuǎn)換表時,就會發(fā)現(xiàn)轉(zhuǎn)換后的字符會以原始值的形式記錄在字典中,被轉(zhuǎn)換的字符還是以ordinal value值表示 ''' #輸出結(jié)果:{97: '7', 103: '8', 120: '9'} #還是使用字典的行駛,在字典中聲明被轉(zhuǎn)換字符、轉(zhuǎn)換字符的ordinal value值 contable = str.maketrans({97: 55, 103: 56, 120: 57}) print(contable) ''' 這種方法需要實現(xiàn)使用ord函數(shù)獲取被轉(zhuǎn)換字符、轉(zhuǎn)換字符的ordinal value值,然后在字典中直接聲明字符的ordinal value值 ''' #輸出結(jié)果:{97: 55, 103: 56, 120: 57}
2)字符的轉(zhuǎn)換
#首先定義一個轉(zhuǎn)換表,這個轉(zhuǎn)換表可以被任意字符串調(diào)用使用 contable = str.maketrans('agx', '789') #定義一個字符串 mystr = 'jiangxluplader' #使用translate方法將轉(zhuǎn)換表以參數(shù)的形式傳入,然后由字符串調(diào)用這個方法實現(xiàn)字符的轉(zhuǎn)換 print(mystr.translate(contable)) #輸出結(jié)果:ji7n89lupl7der
發(fā)現(xiàn)字符串中所有的a字符都被轉(zhuǎn)換成了7,所有的g字符都被轉(zhuǎn)換成了8,所有的x字符都被轉(zhuǎn)換成了9。
3)maketrans方法定義轉(zhuǎn)換表時 還可以指定要刪除的字符,例如刪除字符u、p
contable = str.maketrans('agx', '789', 'up') mystr = 'jiangxluplader' print(mystr.translate(contable)) ''' maketrans方法創(chuàng)建轉(zhuǎn)換表時,第三個參數(shù)是指定刪除的字符 ''' #輸出結(jié)果:ji7n89ll7der
4)maketrans方法定義轉(zhuǎn)換表中,還可以不對字符進行轉(zhuǎn)換,只對某些字符進行刪除,例如只刪除字符u、p
contable = str.maketrans('', '', 'up') mystr = 'jiangxluplader' print(mystr.translate(contable)) #輸出結(jié)果:jiangxllader
當指定第三個參數(shù)時,會將指定的字符刪除,其實就是將指定的字符設(shè)置成了None對象。
所謂的字符串劈分指的是,根據(jù)指定的分隔符,將字符串一分為N個,例如字符串“aaa bbb”,默認的分隔符是空格,根據(jù)分隔符可以將這個字符串分為“aaa”,“bbb”,這就是字符串的劈分。字符串的劈分共有兩種方法:
1)調(diào)用方法split或者rsplit劈分字符串
split方法是從字符串的左側(cè)開始劈分字符串,從前往后開始劈分。
rsplit方法是從字符串的右側(cè)開始劈分字符串,從后往前開始劈分。
split和rsplit方法會根據(jù)分隔符對字符串中所有出現(xiàn)分隔符的地方進行劈分。
默認的分隔符是空格字符串,這兩個方法如果不指定最大的劈分次數(shù),輸出的內(nèi)容沒有任何區(qū)別,并且這兩個方法的返回值都是一個列表。
當字符串中沒有指定的分隔符時,這兩個方法都會返回字符串本身,但是也會將字符串本身放在列表中。
2)調(diào)用方法partition或者rpartition劈分字符串
partition和rpartition這兩個方法在調(diào)用的時候必須指定分隔符,然后對字符串進行劈分,這兩個方法對字符串劈分后會返回一個元組。
partition方法是左劈分,從左往右找到分隔符第一次出現(xiàn)的位置,然后開始劈分字符串,始終劈分成三個元素,第一個元素是分隔符左側(cè)的部分,第二個元素是分隔符,第三個元素是分隔符后面的部分。
rpartition方法是右劈分,從右往左找到分隔符第一次出現(xiàn)的位置,或者從左往右找到分隔符最后一次出現(xiàn)的位置,然后開始劈分字符串,始終劈分成三個元素,第一個元素是分隔符左側(cè)的部分,第二個元素是分隔符,第三個元素是分隔符后面的部分。
partition方法和rpartition只會將字符串中第一次出現(xiàn)分隔符的位置,進行劈分,一分為三,這就是與split方法的最大區(qū)別
partition方法和rpartition兩個方法只是開始劈分的位置處不同,然后將字符串劈分為三個元素:
分隔符前面的部分
分隔符
分隔符后面的部分
如果字符串中不存在指定的分隔符,兩個方法都會返回字符串本身,partition方法劈分的三個元素順序依次為:字符串本身、空字符串、空字符串,rpartition方法劈分的三個元素依次為:空字符串、空字符串、字符串本身。
1)基本的劈分案例
#原始字符串 mystr = "DevOps Jenkins Kubernetes" #左劈分 print(mystr.split()) #右劈分 print(mystr.rsplit()) ''' 左劈分是從DevOps第一個空格字符串處開始劈分,右劈分是從Kubernetes最后一個空格字符串處開始劈分 默認的劈分字符串是空格字符串,只要遇到空格字符串,就將空格字符串左側(cè)的字符串劈分出來。 '''
可以看到split和rsplit兩個方法對字符串劈分后,并沒有明顯的區(qū)別。
2)通過參數(shù)sep指定分隔符劈分字符串
在split和rsplit方法中都可以使用sep參數(shù)指定分隔符,從而根據(jù)指定的分隔符去劈分字符串。
mystr = "DevOps|Jenkins|Kubernetes" print(mystr.split(sep='|')) print(mystr.rsplit(sep='|')) ''' split(sep='|')、rsplit(sep='|')指定分隔符為“|” '''
可以看到split和rsplit兩個方法對字符串劈分后,并沒有明顯的區(qū)別。
當指定的分隔符字符串不存在時,則會返回字符串本身,但是也會將字符串本身放在列表中。
mystr = "DevOps Jenkins Kubernetes" print(mystr.split(sep='|')) print(mystr.rsplit(sep='|'))
3)通過參數(shù)maxsplit指定劈分字符串的最大劈分次數(shù)
在split和rsplit方法中都可以使用maxsplit參數(shù)指定劈分字符串的最大劈分次數(shù),什么意思呢?原本一個字符串可以被劈分6次,但是我們只需要劈分2次就行,就可以使用maxsplit參數(shù)指定指定劈分字符串的最大劈分次數(shù)。
當指定了最大的劈分次數(shù)時,當超過最大的劈分次數(shù)后,剩余的子串會單獨作為一部分輸出,此時split和rsplit兩個劈分方法就會有明顯的區(qū)別。
#定義原始字符串 mystr = "DevOps|Jenkins|Kubernetes|Python|Gitlab" ''' 使用split方法是從左往右開始劈分,從第一個子串位置處開始劈分,分隔符為"|",劈分次數(shù)為2,本身這個字符串可以被劈分5次,我們只劈分2次,那么DevOps、Jenkins會被劈分出來作為列表的單獨元素,而剩余的子串Kubernetes|Python|Gitlab會被作為一部分放在列表的一個元素內(nèi) ''' print(mystr.split(sep='|', maxsplit=2)) #輸出結(jié)果:['DevOps', 'Jenkins', 'Kubernetes|Python|Gitlab'] ''' 使用rsplit方法是從右往左開始劈分,從最后一個子串處開始劈分,分隔符為"|",劈分次數(shù)為2,本身這個字符串可以被劈分5次,我們只劈分2次,那么Gitlab、Python這兩個字符串會被劈分出來作為列表的單獨元素,而剩余的字符DevOps|Jenkins|Kubernetes會被作為一部分,放在列表的一個元素內(nèi) ''' print(mystr.rsplit(sep='|', maxsplit=2)) #輸出結(jié)果:['DevOps|Jenkins|Kubernetes', 'Python', 'Gitlab']
當在劈分方法內(nèi)指定了最大的劈分次數(shù)的參數(shù)時,split左劈分和rsplit右劈分就會有明顯的區(qū)別,split方法是從前往后根據(jù)分隔符進行劈分,rsplit方法是從后往前根據(jù)分隔符進行劈分。
partition方法是左劈分,從左往右找到分隔符第一次出現(xiàn)的位置,然后開始劈分字符串,始終劈分成三個元素,第一個元素是分隔符左側(cè)的部分,第二個元素是分隔符,第三個元素是分隔符后面的部分。
rpartition方法是右劈分,從右往左找到分隔符第一次出現(xiàn)的位置,或者從左往右找到分隔符最后一次出現(xiàn)的位置,然后開始劈分字符串,始終劈分成三個元素,第一個元素是分隔符左側(cè)的部分,第二個元素是分隔符,第三個元素是分隔符后面的部分。
這兩個方法,只會根據(jù)一個分隔符進行劈分字符串,且始終劈分成三個元素,partition方法的分隔符取決于在字符串中第一次出現(xiàn)的分隔符,rpartition方法的分隔符取決于字符串中最后一次出現(xiàn)的分隔符。
1)調(diào)用方法partition劈分字符串
mystr = "DevOps|Jenkins|Kubernetes|Python|Gitlab" print(mystr.partition('|')) ''' partition從左往右找到第一次出現(xiàn)分隔字符串的位置,從這里開始劈分字符串,分隔符左側(cè)的部分(DevOps)為第一個元素,分隔符(|)為第二個元素,分隔符右側(cè)的部分(Jenkins|Kubernetes|Python|Gitlab)為第三個元素。 ''' #輸出結(jié)果:('DevOps', '|', 'Jenkins|Kubernetes|Python|Gitlab')
2)調(diào)用方法rpartition劈分字符串
mystr = "DevOps|Jenkins|Kubernetes|Python|Gitlab" print(mystr.rpartition('|')) ''' rpartition從左往右找到最后一次出現(xiàn)分隔字符串的位置,分隔符左側(cè)的部分(DevOps)為第一個元素,分隔符(|)為第二個元素,分隔符右側(cè)的部分(Jenkins|Kubernetes|Python|Gitlab)為第三個元素。 ''' #輸出結(jié)果:('DevOps|Jenkins|Kubernetes|Python', '|', 'Gitlab')
確實和理論說明的一樣,從左往右找到最后一次分隔符出現(xiàn)的位置,分隔符左側(cè)的部分為元組中的第一個元素,分隔符為第二個元素,分隔符右側(cè)的部分為元組中的第三個元素。
3)當字符串中只有一個分隔符字符串且分隔符后沒有任何字符時
當字符串中只有一個分隔符字符串時,且分隔符后面沒有任何字符串,此時無論是partition方法還是rpartition方法,劈分的字符串第三個元素一定為空。
mystr = "DevOps|" print(mystr.partition('|')) print(mystr.rpartition('|'))
第三個元素取的都是分隔符后面的部分,分隔符后面的部分什么也沒有,因此就會輸出空字符串。
4)當字符串中不存在指定的分隔符字符串(partition方法)
如果字符串中不存在指定的分隔符,partition方法劈分的三個元素順序依次為:字符串本身、空字符串、空字符串。
mystr = "DevOps|Jenkins|Kubernetes|Python|Gitlab" print(mystr.partition('*')) #輸出結(jié)果:('DevOps|Jenkins|Kubernetes|Python|Gitlab', '', '')
第一個元素是字符串的本身,第二個元素是空字符串,第三個元素也是空字符串。
4)當字符串中不存在指定的分隔符字符串(rpartition方法)
如果字符串中不存在指定的分隔符,rpartition方法劈分的三個元素順序依次為:空字符串、空字符串、字符串本身。
mystr = "DevOps|Jenkins|Kubernetes|Python|Gitlab" print(mystr.rpartition('*'))
第一個元素是空字符串,第二個元素是空字符串,第三個元素是字符串的本身。
可以調(diào)用方法join將多個字符串合并成一個字符串。語法格式如下:
'字符串的間隔符'.join(列表|數(shù)組) 字符串的間隔符可以指定,也可以不指定,指定后,每個元素字符串在合并時都會在后面添加一個分隔符。
1)使用join方法將列表中多個字符串進行合并
使用join方法可以將列表中的多個元素,元素也都是字符串,將這些字符串進行合并。
print(''.join(["Python", "Go", "K8S"])) #輸出結(jié)果:PythonGoK8S
使用join方法將列表中的每個元素合并時添加一個分隔符“|”
print('|'.join(["Python", "Go", "K8S"])) #輸出結(jié)果:Python|Go|K8S
2)使用join方法將元組中的多個字符串進行合并
join方法也可以將元組中的元素合并。
print('|'.join(("Python", "Go", "K8S"))) #輸出結(jié)果:Python|Go|K8S
3)可以把字符串看成是字符的列表,然后使用join方法將這些字符合并成字符串
可以把字符串看成是字符的列表,然后使用join將這些字符加上分隔符合并成新的字符串。
print('|'.join("Python")) #輸出結(jié)果:P|y|t|h|o|n
關(guān)于“Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決”知識都有一定的了解,大家如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。