如何使用string.translate()来翻译它?

时间:2013-06-28 03:04:56

标签: python string translate

首先,我有这个:

strSrc = '3.14'

我希望结果如下:

strRst = '叁点壹肆'

P.s:繁体中文中的数字'3'是'叁'。这里:

  

0零1壹2贰3叁4肆5伍6陆7柒8捌9玖

我想使用 string.translate()strSrc翻译成中文。

我检查string.translate() doc,它说:

  

然后使用table翻译字符,该表必须是256个字符的字符串

那么,这是否意味着我应该使用 string.translate()来解决这个问题?


但它始终出现编码问题,如下所示:

>>> engToChn = string.maketrans('0123456789.', '零壹贰叁肆伍陆柒捌玖点')
Traceback (most recent call last):
    File "<stdin>", line 1, in <module> 
ValueError: maketrans arguments must have same length

如果你试试这个:

>>> engToChn = string.maketrans('0123456789.', u'零壹贰叁肆伍陆柒捌玖点')
or
>>> engToChn = string.maketrans(u'0123456789.', u'零壹贰叁肆伍陆柒捌玖点')

会出现这个问题:

Traceback (most recent call last)
    File "<stdin>", line 1, in module
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-10: ordinal not in range(128)

1 个答案:

答案 0 :(得分:1)

问题是汉字(汉字)不适合字符串。

尝试以下方法:

transtable = { ord("0"):u'零', ord("1"):u'壹', ....}
unicodestr = u"314"
print unicodestr.translate(transtable)