溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決

發(fā)布時間:2023-03-21 14:49:34 來源:億速云 閱讀:141 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決文章都會有所收獲,下面我們一起來看看吧。

    1.字符串的字符轉(zhuǎn)換

    1.1.字符轉(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.2.字符轉(zhuǎn)換的應(yīng)用案例

    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)的字符。

    Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決

    除了直接以字符串的形式聲明被轉(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。

    Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決

    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

    Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決

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

    contable = str.maketrans('', '', 'up')
    mystr = 'jiangxluplader'
    print(mystr.translate(contable))
    
    #輸出結(jié)果:jiangxllader

    Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決

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

    Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決

    2.字符串的劈分

    2.1.字符串劈分的概念

    所謂的字符串劈分指的是,根據(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方法劈分的三個元素依次為:空字符串、空字符串、字符串本身。

    2.2.調(diào)用方法split或者rsplit劈分字符串

    1)基本的劈分案例

    #原始字符串
    mystr = "DevOps Jenkins Kubernetes"
    
    #左劈分
    print(mystr.split())
    
    #右劈分
    print(mystr.rsplit())
    
    '''
    	左劈分是從DevOps第一個空格字符串處開始劈分,右劈分是從Kubernetes最后一個空格字符串處開始劈分
    	默認的劈分字符串是空格字符串,只要遇到空格字符串,就將空格字符串左側(cè)的字符串劈分出來。
    '''

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

    Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決

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

    Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決

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

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

    Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決

    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ù)分隔符進行劈分。

    Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決

    2.3.調(diào)用方法partition或者rpartition劈分字符串

    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')

    Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決

    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è)的部分為元組中的第三個元素。

    Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決

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

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

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

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

    Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決

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

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

    mystr = "DevOps|Jenkins|Kubernetes|Python|Gitlab"
    print(mystr.partition('*'))
    
    #輸出結(jié)果:('DevOps|Jenkins|Kubernetes|Python|Gitlab', '', '')

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

    Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決

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

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

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

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

    Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決

    3.字符串的合并

    可以調(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

    Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決

    關(guān)于“Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問題怎么解決”知識都有一定的了解,大家如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細節(jié)

    免責聲明:本站發(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)容。

    AI