我是 Python 新手。
怎么了 这个 在 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 的工作代码吗?
在 Python 3 中,
str.maketrans
已被移除。在 Python 3 中,
bytes.maketrans
和
str.maketrans
方法的等效方法是作为静态方法内置于
str
类型中:
str.maketrans(x[, y[, z]])
如果传入一个参数,则它必须是具有 1 对 1 映射的 Unicode 序数(整数)或字符的字典映射。如果传入两个参数,则它们都必须是长度相等的字符串,并且生成的翻译表将把来自第一个字符串的字符映射到来自第二个字符串的字符。如果传入第三个参数,则它必须是一个字符串(表示要从翻译中删除的字符),并且生成的翻译表将所有出现的字符映射到
None
。
以下是工作示例:
# -*- coding: utf-8 -*-
intab = "aeiou"
outtab = "12345"
trantab = str.maketrans(intab, outtab) # 这一步创建了转换表
str = "this is string example....wow!!!"
print(str.translate(trantab));
这将打印:
th3s 3s str3ng 2x1mpl2....w4w!!!
有关详细信息,请参阅 Python 3.1.1 文档 。
标签:python,python-3.x From: 3031045