unicode文本的ascii音译
cunidecode的Python项目详细描述
unicode文本的有损ascii音译
通常情况下,您有Unicode格式的文本数据,但是您需要 用ascii表示。例如,当与遗留代码集成时 不支持Unicode,也不便于在美国输入非罗马名称 键盘,或从 人类可读的unicode字符串,应该还是可以理解的。 (一个流行的例子是从一篇文章中创建一个url slug 标题)。
在大多数示例中,您可以将unicode字符表示为 “???“或”\15ba\15a0\1610“,提到两个极端情况。但那是 对一个真正想读课文的人来说几乎没用。
unidecode提供了一条中间道路:函数unidecode()采用 Unicode数据并尝试用ASCII字符(即 在0x00和0x7f之间的通用可显示字符,其中 当两个字符集之间的映射被选择为 一个拥有美国键盘的人会选择什么。
生成的ascii表示的质量各不相同。对于语言 西方血统应该介于完美和美好之间。另一方面 音译(即用罗马字母表示发音 在其他书写系统中由文本表达)如 中文、日文或韩文是一个非常复杂的问题,这个图书馆 甚至都不想解决这个问题。它在上下文无关的地方画线 逐字符映射。一个好的经验法则是 你翻译的剧本是拉丁字母,越差 音译。
注意,这个模块通常比简单的 从字符中剥离重音(可以在python中使用 内置功能)。它基于手动调整的字符映射 示例还包含符号和非拉丁语的ASCII近似。 字母表。
这是Paul Logston的Unidecode的C端口<;code@logston.me>;
unidecode(由tomaz solc提供)是text::unidecode perl模块的python端口 Sean M.Burke<;sburke@cpan.org>;及更高版本
模块内容
该模块导出一个采用unicode对象(python)的函数 2.x)并返回字符串:
>>> from cunidecode import unidecode >>> unidecode(u'ko\u017eu\u0161\u010dek') 'kozuscek' >>> unidecode(u'30 \U0001d5c4\U0001d5c6/\U0001d5c1') '30 km/h' >>> unidecode(u"\u5317\u4EB0") 'Bei Jing '
要求
python 2.x>;=2.6和一个c编译器/链接器。
Unidecode的这个实现不在外部“解码”字符 基本的多语言平面。 使用“宽”unicode字符的python构建可能会导致分段 如果试图解码BMP之外的字符,则为错误。
不支持“窄”生成的代理项对编码。
安装
通过运行 这些命令:
python setup.py install python setup.py test
来源
您可以使用:
git clone git@github.com:logston/cunidecode.git
支架
问题、错误报告、有用的代码位和Unidecode建议 应发送到tomaz.solc@tablix.org
问题,错误报告,有用的代码位,以及对cUnidecode的建议 应发送到code@logston.me
版权所有
原始字符音译表:
版权所有2001,Sean M.Burke<;sburke@cpan.org>;,保留所有权利。
python代码和unidecode的后续添加:
版权所有2014,tomaz solc<;tomaz.solc@tablix.org>;
C代码和随后添加到C代码:
版权所有2014,paul logston<;code@logston.me>;
这个程序是免费软件;你可以重新发布和/或修改它 根据自由党公布的GNU通用公共许可条款 软件基础;许可证的版本2,或(由您选择) 任何更新版本。
这个程序的发布是希望它能有用,但是没有 任何警告甚至没有对适销性或 适合某一特定目的。参见GNU通用公共许可证 更多细节。
你应该收到一份GNU通用公共许可证的副本 使用此程序;如果没有,请写信给自由软件基金会,51 富兰克林街,五楼,波士顿,马萨诸塞州02110-1301,美国。 分发此dist中的文档是希望 有用,但没有任何保证;甚至没有 适销性为特定目的的适销性或适合性