我是一個Python新手。爲什麼string.maketrans在Python 3.1中不起作用?
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作爲字節。 – 2012-04-26 10:03:56
要自己查看差異,請比較print(str.maketrans(「aeiou」,「12345」))'的輸出 - 這是 '{97:49,101:50,105:51,111:52 ,print:(bytes.maketrans(b「aeiou」,b「12345」))'(這是一個長而醜陋的工具,可以在這裏展示。) – MarkHu 2017-06-08 23:26:05