首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用string.translate()来翻译?

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

Stack Overflow用户
提问于 2013-06-28 03:04:56
回答 1查看 515关注 0票数 1

首先,我要说的是:

代码语言:javascript
复制
strSrc = '3.14'

我希望结果是:

代码语言:javascript
复制
strRst = '叁点壹肆'

注:繁体中文中的数字'3‘是'叁’。在此:

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

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

我检查了string.translate() doc,上面写着:

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

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

但它总是会出现编码问题,如下所示:

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

如果你尝试这个:

代码语言:javascript
复制
>>> engToChn = string.maketrans('0123456789.', u'零壹贰叁肆伍陆柒捌玖点')
or
>>> engToChn = string.maketrans(u'0123456789.', u'零壹贰叁肆伍陆柒捌玖点')

这将是一个问题:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-28 03:17:01

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

尝试以下几点:

代码语言:javascript
复制
transtable = { ord("0"):u'零', ord("1"):u'壹', ....}
unicodestr = u"314"
print unicodestr.translate(transtable)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17356573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档