python3的字符串的maketrans()和translate()的使用

    当你想替换某个字符串中的某些字母时也许会使用replace()方法,但是这得需要多次使用,比较麻烦,其实python还提供了更加方便的函数,这就是makestrans()和translate(),这两个函数需要配合使用才可以实现上面的要求.

    我们刚开始学英语的时候就学过英语中有五个元音字母,aeiou.我们这里举个例子,就是将一句英语中的元音字母替换成12345,如果可以的话再去掉标点符号.

import string
mystr = "this is string example....wow!!!"
intab = "aeiou"
outtab = "12345"
deltab = ".!"

如上所示:示例字符串为"",其中的单词包含了多个元音字母,我们要将aeiou分别替换成12345.即:

a-->1;

e-->2;

i-->3;

o-->4;

u-->5

然后最好是把其中的标点"...!!!"去掉,这里给出了三种方法,只有在第三种方法中才把标点去掉

# maketrans()方法接受的是一个参数,这个参数得是字典
mydict = dict(zip(intab, outtab))
trantab1 = str.maketrans(mydict) 
print("trantab1:", trantab1)

# maketrans()方法接受的是两个参数,这两个参数需要是长度相同的字符串
trantab2 = str.maketrans(intab, outtab) 
print("trantab2:", trantab2)

# maketrans()方法接受的是三个参数,前两个参数需要是长度相同的字符串,第三个字符串是会删除的字符
trantab3 = str.maketrans(intab, outtab, deltab) 
print("trantab3:", trantab3)

# translate()方法在python3中只能接受一个参数,这与py2中不同
print(mystr.translate(trantab1))
print(mystr.translate(trantab2))
print(mystr.translate(trantab3))

上面代码的输出结果如下:

trantab1: {97: '1', 101: '2', 105: '3', 111: '4', 117: '5'}
trantab2: {97: 49, 101: 50, 105: 51, 111: 52, 117: 53}
trantab3: {97: 49, 101: 50, 105: 51, 111: 52, 117: 53, 46: None, 33: None}
th3s 3s str3ng 2x1mpl2....w4w!!!
th3s 3s str3ng 2x1mpl2....w4w!!!
th3s 3s str3ng 2x1mpl2w4w

从中可以看出最终都是生成了字典,需要删除的字符的键对应的值是None

猜你喜欢

转载自blog.csdn.net/a857553315/article/details/90416783