【发布时间】:2011-03-03 03:25:37
【问题描述】:
我是 Python 新手。
为什么this 在 Python 3.1 中不起作用?
from string import maketrans # Required to call maketrans function.
intab = "aeiou"
outtab = "12345"
trantab = maketrans(intab, outtab)
str = "this is string example....wow!!!";
print str.translate(trantab);
当我执行上面的代码时,我得到了以下内容:
Traceback (most recent call last):
File "<pyshell#119>", line 1, in <module>
transtab = maketrans(intab, outtab)
File "/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/string.py", line 60, in maketrans
raise TypeError("maketrans arguments must be bytes objects")
TypeError: maketrans arguments must be bytes objects
“必须是字节对象”是什么意思?如果可能的话,任何人都可以帮助发布 Python 3.1 的工作代码吗?
【问题讨论】:
-
它不起作用,因为 string.maketrans 没有按照你的想法做。这就是为什么它在 3.1 中被弃用的 bytes.maketrans。您应该使用 str.maketrans 而不是 string.maketrans 用于字符串,而 bytes.maketrans 用于字节。
-
要自己查看差异,请将
print(str.maketrans("aeiou","12345"))的输出——即{97: 49, 101: 50, 105: 51, 111: 52, 117: 53}——与print(bytes.maketrans(b"aeiou",b"12345"))的输出进行比较(此处显示的工具又长又丑。)
标签: python python-3.x