unicode文本的ascii音译

cunidecode的Python项目详细描述


unicode文本的有损ascii音译

https://travis-ci.org/logston/cunidecode.svg?branch=master

通常情况下,您有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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Long OnClick listener删除所选项目   java希望访问另一个类中的连接对象   java语法分析器。readObject()`返回PrivateKeyInfo的实例`   java相当基本的实践任务:forloop   java setOnClickListener错误:不知道为什么?   JList中的Java JSepartor,而不在Swing中使用无意义字符串   java是否可以“重置”类加载器?   java无法使用Selenium在Chrome浏览器的权限弹出窗口中单击“允许”或“阻止”?   使用BottomNavigationView时出现java NullPointerException   ZipInputStream的java关闭在IntelliJ中运行良好,但在Maven中失败,只有一个例外   java是一种可以修改的语言。不创建一个全新的jar文件?   java使用Selenium更改方法内的按条件查找   java Encrypt APK无需混淆