首先,我有这个:
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)
答案 0 :(得分:1)
问题是汉字(汉字)不适合字符串。
尝试以下方法:
transtable = { ord("0"):u'零', ord("1"):u'壹', ....}
unicodestr = u"314"
print unicodestr.translate(transtable)