欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python字符串的字符轉換、字符串劈分、字符串合并問題分析

 更新時間:2023年03月20日 15:14:21   作者:Jiangxl~  
這篇文章主要介紹了Python字符串的字符轉換、字符串劈分、字符串合并,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

1.字符串的字符轉換

1.1.字符轉換的概念

在前面說的的字符串替換,是將字符串中的一個子串替換成了新的子串,如果我們想對字符串中的某些字符進行轉換,也就是對字符串中的單個字符進行替換,可以調用方法maketrans和translate來實現(xiàn)。

首先調用maketrans方法創(chuàng)建一個轉換表,在轉換表中聲明要將那些字符轉換成什么字符,然后將創(chuàng)建的轉換表作為參數(shù)傳給translate方法,實現(xiàn)字符的轉換。

maketrans方法創(chuàng)建轉換表的語法:

str.maketrans('轉換的字符', '轉換后的字符','刪除的字符')

maketrans方法可以傳入三個參數(shù):

  • 第一個參數(shù)用于指定被轉換的字符,如果指定了多個字符,那么轉換后的字符也需要指定多個,且數(shù)量都要相同,被轉換的第一個字符會轉換成第二個參數(shù)中的第一個字符,案例中會說明。
  • 第二個參數(shù)用于指定轉換后的字符。
  • 第三個參數(shù)用于指定刪除那些字符。

定義好一個轉換表之后,使用print可以打印這個轉換表的內容,此時返回的是一個字典,字典中的每個key:value都是字符對應的ordinal value值。

translate方法將轉換表當做參數(shù)傳入,再被定義的字符串調用,最終實現(xiàn)字符的轉換。

1.2.字符轉換的應用案例

1)轉換表的創(chuàng)建

定義轉換表時,如果指定了多個被轉換的字符,那么轉換后的字符數(shù)量要與被轉換的字符數(shù)量相同,此時第一個參數(shù)和第二個參數(shù)會交叉轉換,代碼如下。

contable = str.maketrans('agx', '789')
print(contable)

'''
代碼解釋:
    str.maketrans('agx', '789')定義了一個轉換表,其中字符a轉換成字符7,字符g轉換成字符8,字符x轉換成字符9
    當使用print函數(shù)打印定義的轉換表時,返回的是一個字典,key是被轉換的字符,value是轉換后的字符,并且返回的是字符的ordinal value值
    返回結果:{97: 55, 103: 56, 120: 57}
        {97是字符a: 55是字符7, 103是字符g: 56是字符8, 120是字符x: 57是字符9}
'''

可以使用print函數(shù)打印轉換表,返回結果是一個字典,在字典中的值是對應字符的ordinal value值,在字典中可以明確的看到什么字符會被轉換成什么字符,如下圖,97是字符a,55是字符7,97對應的字符會轉換成55對應的字符。

image-20220807161147990

除了直接以字符串的形式聲明被轉換字符和轉換后字符的原始值外,還可以使用字典的方法聲明轉換與被轉換的字符,因為轉換表返回的結果就是一個字典,但是用的最普遍的方法還是直接在轉換表中聲明被轉換的字符。

#使用字典的形式,在字典中聲明轉換的字符、被轉換字符的原始值
contable = str.maketrans({'a': '7', 'g': '8', 'x': '9'})
print(contable)
'''
	此時使用print打印轉換表時,就會發(fā)現(xiàn)轉換后的字符會以原始值的形式記錄在字典中,被轉換的字符還是以ordinal value值表示
'''
#輸出結果:{97: '7', 103: '8', 120: '9'}

#還是使用字典的行駛,在字典中聲明被轉換字符、轉換字符的ordinal value值
contable = str.maketrans({97: 55, 103: 56, 120: 57})
print(contable)
'''
	這種方法需要實現(xiàn)使用ord函數(shù)獲取被轉換字符、轉換字符的ordinal value值,然后在字典中直接聲明字符的ordinal value值
'''
#輸出結果:{97: 55, 103: 56, 120: 57}

2)字符的轉換

#首先定義一個轉換表,這個轉換表可以被任意字符串調用使用
contable = str.maketrans('agx', '789')

#定義一個字符串
mystr = 'jiangxluplader'

#使用translate方法將轉換表以參數(shù)的形式傳入,然后由字符串調用這個方法實現(xiàn)字符的轉換
print(mystr.translate(contable))

#輸出結果:ji7n89lupl7der

發(fā)現(xiàn)字符串中所有的a字符都被轉換成了7,所有的g字符都被轉換成了8,所有的x字符都被轉換成了9。

image-20220807162711194

3)maketrans方法定義轉換表時 還可以指定要刪除的字符,例如刪除字符u、p

contable = str.maketrans('agx', '789', 'up')
mystr = 'jiangxluplader'
print(mystr.translate(contable))

'''
	maketrans方法創(chuàng)建轉換表時,第三個參數(shù)是指定刪除的字符
'''

#輸出結果:ji7n89ll7der

image-20220807163117769

4)maketrans方法定義轉換表中,還可以不對字符進行轉換,只對某些字符進行刪除,例如只刪除字符u、p

contable = str.maketrans('', '', 'up')
mystr = 'jiangxluplader'
print(mystr.translate(contable))

#輸出結果:jiangxllader

image-20220807163318913

當指定第三個參數(shù)時,會將指定的字符刪除,其實就是將指定的字符設置成了None對象。

image-20220807163546952

2.字符串的劈分

2.1.字符串劈分的概念

所謂的字符串劈分指的是,根據(jù)指定的分隔符,將字符串一分為N個,例如字符串“aaa bbb”,默認的分隔符是空格,根據(jù)分隔符可以將這個字符串分為“aaa”,“bbb”,這就是字符串的劈分。字符串的劈分共有兩種方法:

1)調用方法split或者rsplit劈分字符串

  • split方法是從字符串的左側開始劈分字符串,從前往后開始劈分。
  • rsplit方法是從字符串的右側開始劈分字符串,從后往前開始劈分。

split和rsplit方法會根據(jù)分隔符對字符串中所有出現(xiàn)分隔符的地方進行劈分。

默認的分隔符是空格字符串,這兩個方法如果不指定最大的劈分次數(shù),輸出的內容沒有任何區(qū)別,并且這兩個方法的返回值都是一個列表。

當字符串中沒有指定的分隔符時,這兩個方法都會返回字符串本身,但是也會將字符串本身放在列表中。

2)調用方法partition或者rpartition劈分字符串

partition和rpartition這兩個方法在調用的時候必須指定分隔符,然后對字符串進行劈分,這兩個方法對字符串劈分后會返回一個元組。

  • partition方法是左劈分,從左往右找到分隔符第一次出現(xiàn)的位置,然后開始劈分字符串,始終劈分成三個元素,第一個元素是分隔符左側的部分,第二個元素是分隔符,第三個元素是分隔符后面的部分。
  • rpartition方法是右劈分,從右往左找到分隔符第一次出現(xiàn)的位置,或者從左往右找到分隔符最后一次出現(xiàn)的位置,然后開始劈分字符串,始終劈分成三個元素,第一個元素是分隔符左側的部分,第二個元素是分隔符,第三個元素是分隔符后面的部分。

partition方法和rpartition只會將字符串中第一次出現(xiàn)分隔符的位置,進行劈分,一分為三,這就是與split方法的最大區(qū)別

partition方法和rpartition兩個方法只是開始劈分的位置處不同,然后將字符串劈分為三個元素:

  • 分隔符前面的部分
  • 分隔符
  • 分隔符后面的部分

如果字符串中不存在指定的分隔符,兩個方法都會返回字符串本身,partition方法劈分的三個元素順序依次為:字符串本身、空字符串、空字符串,rpartition方法劈分的三個元素依次為:空字符串、空字符串、字符串本身。

2.2.調用方法split或者rsplit劈分字符串

1)基本的劈分案例

#原始字符串
mystr = "DevOps Jenkins Kubernetes"

#左劈分
print(mystr.split())

#右劈分
print(mystr.rsplit())

'''
	左劈分是從DevOps第一個空格字符串處開始劈分,右劈分是從Kubernetes最后一個空格字符串處開始劈分
	默認的劈分字符串是空格字符串,只要遇到空格字符串,就將空格字符串左側的字符串劈分出來。
'''

可以看到split和rsplit兩個方法對字符串劈分后,并沒有明顯的區(qū)別。

image-20220807211833467

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ū)別。

image-20220807212154362

當指定的分隔符字符串不存在時,則會返回字符串本身,但是也會將字符串本身放在列表中。

mystr = "DevOps Jenkins Kubernetes"
print(mystr.split(sep='|'))
print(mystr.rsplit(sep='|'))

image-20220807212335836

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會被作為一部分放在列表的一個元素內
'''
print(mystr.split(sep='|', maxsplit=2))
#輸出結果:['DevOps', 'Jenkins', 'Kubernetes|Python|Gitlab']

'''
	使用rsplit方法是從右往左開始劈分,從最后一個子串處開始劈分,分隔符為"|",劈分次數(shù)為2,本身這個字符串可以被劈分5次,我們只劈分2次,那么Gitlab、Python這兩個字符串會被劈分出來作為列表的單獨元素,而剩余的字符DevOps|Jenkins|Kubernetes會被作為一部分,放在列表的一個元素內
'''
print(mystr.rsplit(sep='|', maxsplit=2))
#輸出結果:['DevOps|Jenkins|Kubernetes', 'Python', 'Gitlab']

當在劈分方法內指定了最大的劈分次數(shù)的參數(shù)時,split左劈分和rsplit右劈分就會有明顯的區(qū)別,split方法是從前往后根據(jù)分隔符進行劈分,rsplit方法是從后往前根據(jù)分隔符進行劈分。

image-20220807213755164

2.3.調用方法partition或者rpartition劈分字符串

partition方法是左劈分,從左往右找到分隔符第一次出現(xiàn)的位置,然后開始劈分字符串,始終劈分成三個元素,第一個元素是分隔符左側的部分,第二個元素是分隔符,第三個元素是分隔符后面的部分。

rpartition方法是右劈分,從右往左找到分隔符第一次出現(xiàn)的位置,或者從左往右找到分隔符最后一次出現(xiàn)的位置,然后開始劈分字符串,始終劈分成三個元素,第一個元素是分隔符左側的部分,第二個元素是分隔符,第三個元素是分隔符后面的部分。

這兩個方法,只會根據(jù)一個分隔符進行劈分字符串,且始終劈分成三個元素,partition方法的分隔符取決于在字符串中第一次出現(xiàn)的分隔符,rpartition方法的分隔符取決于字符串中最后一次出現(xiàn)的分隔符。

1)調用方法partition劈分字符串

mystr = "DevOps|Jenkins|Kubernetes|Python|Gitlab"
print(mystr.partition('|'))

'''
	partition從左往右找到第一次出現(xiàn)分隔字符串的位置,從這里開始劈分字符串,分隔符左側的部分(DevOps)為第一個元素,分隔符(|)為第二個元素,分隔符右側的部分(Jenkins|Kubernetes|Python|Gitlab)為第三個元素。
'''

#輸出結果:('DevOps', '|', 'Jenkins|Kubernetes|Python|Gitlab')

image-20220807222114782

2)調用方法rpartition劈分字符串

mystr = "DevOps|Jenkins|Kubernetes|Python|Gitlab"
print(mystr.rpartition('|'))

'''
	rpartition從左往右找到最后一次出現(xiàn)分隔字符串的位置,分隔符左側的部分(DevOps)為第一個元素,分隔符(|)為第二個元素,分隔符右側的部分(Jenkins|Kubernetes|Python|Gitlab)為第三個元素。
'''

#輸出結果:('DevOps|Jenkins|Kubernetes|Python', '|', 'Gitlab')

確實和理論說明的一樣,從左往右找到最后一次分隔符出現(xiàn)的位置,分隔符左側的部分為元組中的第一個元素,分隔符為第二個元素,分隔符右側的部分為元組中的第三個元素。

image-20220807230626355

3)當字符串中只有一個分隔符字符串且分隔符后沒有任何字符時

當字符串中只有一個分隔符字符串時,且分隔符后面沒有任何字符串,此時無論是partition方法還是rpartition方法,劈分的字符串第三個元素一定為空。

mystr = "DevOps|"
print(mystr.partition('|'))
print(mystr.rpartition('|'))

第三個元素取的都是分隔符后面的部分,分隔符后面的部分什么也沒有,因此就會輸出空字符串。

image-20220807231021053

4)當字符串中不存在指定的分隔符字符串(partition方法)

如果字符串中不存在指定的分隔符,partition方法劈分的三個元素順序依次為:字符串本身、空字符串、空字符串。

mystr = "DevOps|Jenkins|Kubernetes|Python|Gitlab"
print(mystr.partition('*'))

#輸出結果:('DevOps|Jenkins|Kubernetes|Python|Gitlab', '', '')

第一個元素是字符串的本身,第二個元素是空字符串,第三個元素也是空字符串。

image-20220807231427886

4)當字符串中不存在指定的分隔符字符串(rpartition方法)

如果字符串中不存在指定的分隔符,rpartition方法劈分的三個元素順序依次為:空字符串、空字符串、字符串本身。

mystr = "DevOps|Jenkins|Kubernetes|Python|Gitlab"
print(mystr.rpartition('*'))

第一個元素是空字符串,第二個元素是空字符串,第三個元素是字符串的本身。

image-20220807231538389

3.字符串的合并

可以調用方法join將多個字符串合并成一個字符串。語法格式如下:

'字符串的間隔符'.join(列表|數(shù)組)

字符串的間隔符可以指定,也可以不指定,指定后,每個元素字符串在合并時都會在后面添加一個分隔符。

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

image-20220807235243782

到此這篇關于Python字符串的字符轉換、字符串劈分、字符串合并的文章就介紹到這了,更多相關Python字符串合并內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Pycharm 如何一鍵加引號的方法步驟

    Pycharm 如何一鍵加引號的方法步驟

    這篇文章主要介紹了Pycharm 如何一鍵加引號的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Python基礎異常處理梳理總結

    Python基礎異常處理梳理總結

    這篇文章主要介紹了Python基礎異常處理梳理總結,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-06-06
  • 使用grappelli為django admin后臺添加模板

    使用grappelli為django admin后臺添加模板

    本文介紹了一款非常流行的Django模板系統(tǒng)--grappelli,以及如何給Django的admin后臺添加模板,非常的實用,這里推薦給大家。
    2014-11-11
  • Pytorch使用MNIST數(shù)據(jù)集實現(xiàn)基礎GAN和DCGAN詳解

    Pytorch使用MNIST數(shù)據(jù)集實現(xiàn)基礎GAN和DCGAN詳解

    今天小編就為大家分享一篇Pytorch使用MNIST數(shù)據(jù)集實現(xiàn)基礎GAN和DCGAN詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python+LyScript實現(xiàn)自定義反匯編

    Python+LyScript實現(xiàn)自定義反匯編

    LyScript?插件默認提供了一個get_disasm_code()方法可以直接獲取到指定行數(shù)的反匯編代碼。本文將利用LyScript實現(xiàn)自定義反匯編,感興趣的可以了解一下
    2022-07-07
  • Python matplotlib繪圖詳解

    Python matplotlib繪圖詳解

    這篇文章主要介紹了Python matplotlib繪圖的方法詳解,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-10-10
  • Django部署到服務器后無法獲取到靜態(tài)元素 The requested resource was not found on this server(問題及解決方案)

    Django部署到服務器后無法獲取到靜態(tài)元素 The requested resource

    寫了一個Django項目,部署到云主機后,訪問發(fā)現(xiàn)圖片無法訪問,報錯The requested resource was not found on this server,下面給大家介紹Django部署到服務器后無法獲取到靜態(tài)元素The requested resource was not found on this server(問題及解決方案),需要的朋友可以參考下
    2024-02-02
  • python數(shù)字圖像處理圖像的繪制詳解

    python數(shù)字圖像處理圖像的繪制詳解

    這篇文章主要為大家介紹了python數(shù)字圖像處理圖像的繪制示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • python通過郵件服務器端口發(fā)送郵件的方法

    python通過郵件服務器端口發(fā)送郵件的方法

    這篇文章主要介紹了python通過郵件服務器端口發(fā)送郵件的方法,涉及Python發(fā)送郵件的相關技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • Python中判斷子串存在的性能比較及分析總結

    Python中判斷子串存在的性能比較及分析總結

    這篇文章主要給大家總結介紹了Python中判斷子串存在的性能比較及分析的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06

最新評論