<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在前面說的的字串替換,是將字串中的一個子串替換成了新的子串,如果我們想對字串中的某些字元進行轉換,也就是對字串中的單個字元進行替換,可以呼叫方法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方法會根據分隔符對字串中所有出現分隔符的地方進行劈分。
預設的分隔符是空格字串,這兩個方法如果不指定最大的劈分次數,輸出的內容沒有任何區別,並且這兩個方法的返回值都是一個列表。
當字串中沒有指定的分隔符時,這兩個方法都會返回字串本身,但是也會將字串本身放在列表中。
2)呼叫方法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字串合併內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45