- ·上一篇内容:Python rpartition()函数
- ·下一篇内容:Python translate()函数
Python maketrans()函数
Python maketrans()是一个静态函数(使用str类型直接调用,而非字符串),其作用是为str.translate()函数提供转换字符映射表。
maketrans()语法格式
官方文档给出的语法格式如下:
static
str.maketrans(x[, y[, z]])
参数
该函数有三个参数,其中后两个是可选参数。
(1)该函数只有一个参数 x 时, x 必须是字典类型,以给出转换的映射关系。字典的键取值可以是:对应某个Unicode字符的整型序数,或者字符(长度为1的字符串);键对应的值取值可以为Unicode字符序数(整型),任意长度的字符串或None。
(2)该函数取两个参数时, x 和 y 必须是等长的字符串。在生成的结果字典中, x 中的每一个字符将于 y 中相同位置的字符进行匹配;
(3)该函数取第三个参数时,该参数 z 必须是一个字符串,字符串中的每个字符将使用 None 进行匹配,即在使用 str.translate()函数 对 str 进行转换时, str 中包含在 z 中的字符将被删除掉。
返回值
该函数的返回值是字典类型。是由 x 中的字符对应的Unicode序数作为键, y 中对应的字符序数作为元素值构成的字典,当指定 z 参数时, z 参数中的每个字符Unicode序数也会作为字典中的键,而对应的值为 None .
maketrans()函数示例
1、只有一个参数
当给定一个参数x时,x必须是字典类型。
>>>
d1 = str.maketrans({98:104})
>>>
d1
{98: 104}
>>>
type(d1)
<class 'dict'>
>>>
d2 = str.maketrans({'a':'b'})
>>>
d2
{97: 'b'}
>>>
d3 = str.maketrans({'a':'abcd'})
>>>
d3
{97: 'abcd'}
>>>
d4 = str.maketrans({'a':None,'b':'c',100:110,112:'abc'})
>>>
d4
{97: None, 98: 'c', 100: 110, 112: 'abc'}
>>>
d5 = str.maketrans('a')
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
d5 = str.maketrans('a')
TypeError: if you give only one argument to maketrans it must be a dict
>>>
d5 = str.maketrans(103)
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
d5 = str.maketrans(103)
TypeError: if you give only one argument to maketrans it must be a dict
>>>
d5 = str.maketrans(None)
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
d5 = str.maketrans(None)
TypeError: if you give only one argument to maketrans it must be a dict
>>>
从上面的例子可以看出,当所给的参数不是字典类型时,将引发“TypeError”错误。
2、给定两个参数
当给定两个参数x和y时,x和y必须是等长的字符串。
>>>
x = '1234'
>>>
y = 'abcd'
>>>
print(str.maketrans(x,y))
{49: 97, 50: 98, 51: 99, 52: 100}
>>>
print(str.maketrans('xyz','ab'))
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
print(str.maketrans('xyz','ab'))
ValueError: the first two maketrans arguments must have equal length
>>>
print(str.maketrans('ab','xyz'))
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
print(str.maketrans('ab','xyz'))
ValueError: the first two maketrans arguments must have equal length
>>>
print(str.maketrans('abc','xy '))
{97: 120, 98: 121, 99: 32}
>>>
注意:最后一个例子中 y 参数的字符串中最后一个字符为空格。同时,我们注意到如果两个字符串不等长时,将引发“ValueError”错误。
3、给定3个参数
给定三个参数时,z参数是一个字符串,用于指定要删除的字符。
>>>
x = 'abcd'
>>>
y = 'wxyz'
>>>
z = 'hij'
>>>
print(str.maketrans(x, y, z))
{97: 119, 98: 120, 99: 121, 100: 122, 104: None, 105: None, 106: None}
>>>
从上面的例子可以看出,'h', 'i', 'j' 三个字符被转换成了None,即在使用str.translate()函数时,这些字符将被删除掉。
4、maketrans()函数与translate()函数配合使用
前面说过,maketrans()函数主要是为translate()函数生成转换的字符映射表,下面的例子将演示两者如何配合使用的。
>>>
x = 'aeiou'
>>>
y = 'vwxyz'
>>>
z = 'rst'
>>>
dic = str.maketrans(x, y, z)
>>>
str1 = 'I love my country as much as i love my life.'
>>>
res = str1.translate(dic)
>>>
print(res)
I lyvw my cyzny v mzch v x lyvw my lxfw.
>>>
上面演示了maketrans()函数和translate()函数的配合使用方法。从结果中可以看出,translate()函数执行完毕后,str1中的字符'a', 'e', 'i', 'o', 'u' 五个字母(由参数x给定的字符串中的字符)分别被 'v', 'w', 'x', 'y' 和 'z' (由参数y给定的字符串中的字符)给替换掉了,同时在str1中删除掉了参数z中指定的字符。
从这个例子中,我们也注意到,maketrans()函数和translate()函数的参数值是大小写敏感的,原因在于其按照Unicode字符序数来处理字符。
总结
以上讲解了Python中静态函数maketrans()的参数及使用方法,并给出了其与translate()函数配合使用的例子。
实际上,maketrans()函数就是生成由键值对构成的字符映射表,其结果作为translate()函数的参数,用于对字符串中的字符进行替换,maketrans()函数中x参数用于给出需要替换的字符构成的字符串,y参数用于给出替换后的字符构成的字符串,z参数给出需要在字符串删除掉的字符构成的字符串。
以上内容,你 get 到了吗?也欢迎你关注本站的公众号【优雅的代码】,本站中的内容也将定期更新到公众号中。
如需转载请注明出处:翔宇亭IT乐园(http://www.biye5u.com),并给出本文的链接地址:
http://www.biye5u.com/article/python/2021/6519.html
微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。
个人成长离不开各位的关注,你的关注就是我继续前行的动力。