python split(),maketrans(),translate()方法切割字符串

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;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值