1

首先,我有这个:

strSrc = '3.14'

我希望结果是这样的:

strRst = '叁点壹肆'

Ps:繁体中的数字“3”是“叁”。这里:

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

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

我检查了string.translate() 文档,它说:

然后使用 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)
4

1 回答 1

1

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

尝试以下操作:

transtable = { ord("0"):u'零', ord("1"):u'壹', ....}
unicodestr = u"314"
print unicodestr.translate(transtable)
于 2013-06-28T03:17:01.027 回答