“需要调用maketrans函数”

时间:2014-02-06 17:30:26

标签: python string python-3.x

为什么这不起作用?

from string import maketrans

intab = "aeiou"
outtab = "12345"
trantab = maketrans(intab, outtab)

str= "this is string example...wow!!!";
print str.translate(trantab);

它说我需要制作maketrans功能,这究竟意味着什么? 另外它说print str.translate是一种无效的语法,我该如何修复呢?

1 个答案:

答案 0 :(得分:2)

因为在Python 3中str.maketrans()取代了字典;看来你正在看Python 2的文档。

字典应将代码点(整数)映射到其替换值(整数或unicode值),或None以删除代码点。

intab = "aeiou"
outtab = "12345"
trantab = str.maketrans(intab, outtab)

mystr.translate(trantab)

无需为此作业导入string.maketrans; str.maketrans() static function可用于完成工作。

演示:

>>> intab = "aeiou"
>>> outtab = "12345"
>>> trantab = str.maketrans(intab, outtab)
>>> mystr = "this is string example...wow!!!"
>>> mystr.translate(trantab)
'th3s 3s str3ng 2x1mpl2...w4w!!!'

来自str.translate() documentation

  

返回s的副本,其中所有字符都已通过 map 映射,该映射必须是Unicode序数(整数)到Unicode序列,字符串或None的字典。未映射的字符保持不变。映射到None的字符将被删除。

顺便提一下,Python 2 unicode.translate()也可以这样工作,而在Python 3中,bytes.translate()也使用旧的API。