当你想替换某个字符串中的某些字母时也许会使用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