split切割字符串
带参数,遇到连续参数会切割出空字符,这是一个小坑
a = 'zzzz;;xxxx;'
b = 'zzzz;'
print('a',a.split(';'))
print('b',b.split(';'))
>>>a ['zzzz', '', 'xxxx', ''] # 切割结果有''
>>>b ['zzzz', '']
用列表推导式可以很优雅的处理:
splitA = a.split(';')
aplitB = b.split(';')
A = [i for i in splitA if i !='']
B = [i for i in aplitB if i !='']
print('A',A)
print('B',B)
>>>['zzzz', 'xxxx']
>>>['zzzz']
join()
join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串
>>> jn1="-"
>>> jn2="------"
>>> str='name'
>>> jn1.join(str) #字符串也属于序列
'n-a-m-e'
>>> jn2.join(str) #使用多字符连接序列
'n------a------m------e'
>>> fruits={'apple','banana'}
>>> jn1.join(fruits) #连接的序列是集合
'apple-banana'
>>> animals=("pig","dog")
>>> jn1.join(animals) #连接的序列是元祖
'pig-dog'
>>> students={"name1":"joy","name2":"john","name3":"jerry"} #连接的序列是字典,会将所有key连接起来
>>> jn1.join(students)
'name1-name2-name3'
>>> student = ['小红','小黄'] #链接的是列表
>>> jn1.join(student)
'小红-小黄'
maketrans(),translate()
maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
translate() 方法根据参数table给出的表(包含 256 个字符)转换字符串的字符,要过滤掉的字符放到 deletechars 参数中。
table = str.maketrans(intab, outtab,delete)
str.translate(table)
bytes.translate(table)
bytearray.translate(table)
intab = "aeiou" # 要被outtab替换的字符
outtab = "12345" # 一对一对应
delete = None # 要删除的字符,默认为None
trantab = str.maketrans(intab, outtab, None) # 制作翻译表
'runoob'.translate(trantab) # 转换
str = "this is string example....wow!!!"
print (str.translate(trantab))
>>>th3s 3s str3ng 2x1mpl2....w4w!!!
# 制作翻译表
bytes_tabtrans_1 = str.maketrans('abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')
# 转换为大写,并删除字母o
bytes_tabtrans_2 = str.maketrans('abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ','o')
#只转换为大写
print('runoob'.translate(bytes_tabtrans_1))
# 转换为大写,并删除字母o
print('runoob'.translate(bytes_tabtrans_2))
replace()
也可以用replace()方法来做上面的事情
replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
str.replace(old, new[, max])
a = 'zzzz;;xxxx;'
print (a.replace(';','-'))
print (a.replace(';','*'))
print (a.replace(';','*',2))
>>>zzzz--xxxx-
>>>zzzz**xxxx*
>>>zzzz**xxxx;