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