2014-02-06 86 views
0

爲什麼這不起作用?「需要調用maketrans函數」

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是一個無效的語法,我該如何解決它?

+0

不要命名變量'str';你掩蓋了內置的類型。你也可以在Python中刪除';'分號;他們很少需要。 –

回答

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的副本必須是Unicode碼的字典(整數)到Unicode序號,字符串或None。未映射的字符保持不變。映射到None的字符被刪除。

順便提一句,Python 2 unicode.translate()也是這樣工作的,而在Python 3中,bytes.translate()也使用舊的API。

相關問題