Python 3.x:使用string.maketrans()来创建unicode-character转换

时间:2012-04-26 07:52:36

标签: python string unicode python-3.x

我想写下面的代码:

import string
frm = b'acdefhnoprstuw'
to  = 'אקדיפהנופרסתאו'
trans_table = string.maketrans(frm, to)
hebrew_phrase = 'fear cuts deeper than swords'.translate(trans_table)

上述代码不起作用,因为to的{​​{1}}参数必须是字节序列,而不是字符串。问题是字节序列只能包含ASCII文字字符。因此,我无法进行将英文字符串翻译为希伯来字符串的转换。原因是string.maketrans(frm, to)重新生成了一个字节对象。

有没有一种优雅的方法可以使用string.maketrans()string.maketrans()函数(或与unicode一起使用的等效函数)来完成我的任务?

1 个答案:

答案 0 :(得分:13)

你需要使用str.maketrans(),它将两个str作为参数。

>>> frm = 'acdefhnoprstuw'
>>> to = 'אקדיפהנופרסתאו'
>>> trans_table = str.maketrans(frm, to)
>>> hebrew_phrase = 'fear cuts deeper than swords'.translate(trans_table)
>>> hebrew_phrase
'פיאר קאתס דייפיר תהאנ סוורדס'

String.maketrans仍然存在于Python 3.1中,但这只是因为他们错过了将它移动到3.0中的bytes.maketrans()。它已经在3.1中被弃用,而在3.2中它已经消失了。