Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk menyelesaikan masalah penukaran aksara, pemisahan rentetan dan penggabungan rentetan dalam rentetan Python
Penggantian rentetan yang disebut tadi ialah Gantikan subrentetan dalam rentetan dengan subrentetan baharu Jika kita ingin menukar aksara tertentu dalam rentetan, iaitu menggantikan satu aksara dalam rentetan, kita boleh memanggil kaedah maketrans dan menterjemah untuk mencapai ini.
Mula-mula panggil kaedah maketrans untuk mencipta jadual penukaran, isytiharkan dalam jadual penukaran aksara apa yang hendak ditukarkan kepada aksara tersebut, dan kemudian hantar jadual penukaran yang dibuat sebagai parameter kepada kaedah terjemah untuk melaksanakan penukaran aksara.
Sintaks kaedah maketrans untuk mencipta jadual penukaran:
str.maketrans('转换的字符', '转换后的字符','删除的字符')
Kaedah maketrans boleh lulus dalam tiga parameter:
Parameter pertama ialah digunakan untuk menentukan sasaran Aksara ditukar, jika berbilang aksara ditentukan, maka berbilang aksara ditukar juga perlu ditentukan, dan nombor mestilah sama Aksara pertama yang akan ditukar akan ditukar kepada aksara pertama dalam parameter kedua, kes Mesyuarat akan menerangkan.
Parameter kedua digunakan untuk menentukan aksara yang ditukar.
Parameter ketiga digunakan untuk menentukan aksara yang hendak dipadamkan.
Selepas menentukan jadual penukaran, anda boleh menggunakan cetakan untuk mencetak kandungan jadual penukaran Pada masa ini, kamus dikembalikan dan setiap kunci:nilai dalam kamus sepadan nilai ordinal. Kaedah
terjemah lulus dalam jadual penukaran sebagai parameter, dan kemudian dipanggil oleh rentetan yang ditentukan untuk akhirnya mencapai penukaran aksara.
1) Penciptaan jadual penukaran
Apabila mentakrifkan jadual penukaran, jika berbilang jadual penukaran dinyatakan sebagai aksara , maka bilangan aksara selepas penukaran mestilah sama dengan bilangan aksara yang ditukar Pada masa ini, parameter pertama dan parameter kedua akan ditukar silang Kodnya adalah seperti berikut.
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} '''
Anda boleh menggunakan fungsi cetakan untuk mencetak jadual penukaran Hasil pemulangan ialah kamus. Nilai dalam kamus ialah nilai ordinal aksara yang sepadan akan ditukar kepada aksara apa Seperti yang ditunjukkan dalam rajah di bawah, 97 ialah aksara a, 55 ialah aksara 7, dan aksara yang sepadan dengan 97 akan ditukar kepada aksara yang sepadan dengan 55.
Selain mengisytiharkan terus aksara yang ditukar dan nilai asal aksara yang ditukar dalam bentuk rentetan, anda juga boleh menggunakan kaedah kamus untuk mengisytiharkan penukaran dan aksara ditukar, kerana Hasil yang dikembalikan oleh jadual penukaran ialah kamus, tetapi kaedah yang paling biasa ialah mengisytiharkan aksara yang ditukar terus dalam jadual penukaran.
#使用字典的形式,在字典中声明转换的字符、被转换字符的原始值 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) Penukaran aksara
#首先定义一个转换表,这个转换表可以被任意字符串调用使用 contable = str.maketrans('agx', '789') #定义一个字符串 mystr = 'jiangxluplader' #使用translate方法将转换表以参数的形式传入,然后由字符串调用这个方法实现字符的转换 print(mystr.translate(contable)) #输出结果:ji7n89lupl7der
mendapati bahawa semua aksara dalam rentetan telah ditukar kepada 7 dan semua aksara g telah ditukar kepada 8, semua aksara x adalah ditukar kepada 9.
3) Kaedah maketrans juga boleh menentukan aksara yang akan dipadamkan semasa mentakrifkan jadual penukaran, seperti memadam aksara u, p
contable = str.maketrans('agx', '789', 'up') mystr = 'jiangxluplader' print(mystr.translate(contable)) ''' maketrans方法创建转换表时,第三个参数是指定删除的字符 ''' #输出结果:ji7n89ll7der
4) Dalam jadual penukaran definisi kaedah maketrans, anda juga tidak boleh menukar aksara dan hanya memadam aksara tertentu, seperti hanya memadam aksara u dan p
contable = str.maketrans('', '', 'up') mystr = 'jiangxluplader' print(mystr.translate(contable)) #输出结果:jiangxllader
Apabila parameter ketiga ditentukan, aksara yang dinyatakan akan dipadamkan, aksara yang ditentukan akan ditetapkan kepada objek Tiada.
Apa yang dipanggil pemisahan rentetan merujuk kepada Ya, rentetan. dibahagikan kepada N keping mengikut pembatas yang ditentukan, sebagai contoh, rentetan "aaa bbb", pembatas lalai ialah ruang, dan rentetan boleh dibahagikan kepada "aaa", "bbb" mengikut pembatas, Ini ialah membelah tali. Terdapat dua kaedah untuk membelah rentetan:
1) Panggil kaedah split atau rsplit untuk membelah rentetan
Kaedah split adalah dengan membelah rentetan daripada aksara Mula membelah rentetan dari sebelah kiri rentetan, dan mula membelah dari hadapan ke belakang.
Kaedah rsplit ialah membelah rentetan bermula dari bahagian kanan rentetan dan bermula dari belakang ke hadapan.
Kaedah split dan rsplit akan memisahkan semua kejadian pembatas dalam rentetan mengikut pembatas.
Pembatas lalai ialah rentetan ruang Jika bilangan maksimum pemisahan tidak ditentukan oleh kedua-dua kaedah ini, tiada perbezaan dalam kandungan output dan nilai pulangan kedua-dua kaedah ialah senarai.
当字符串中没有指定的分隔符时,这两个方法都会返回字符串本身,但是也会将字符串本身放在列表中。
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
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah penukaran aksara, pemisahan rentetan dan penggabungan rentetan dalam rentetan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!