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中优雅地处理FileNotFoundexception   java线程卡在BlockingQueue上。无缘无故   类网格程序w/java   StrutsJava:动态应用Velocity脚本   java在运行时重写/禁用方面   java Apache POI无法正确读取Excel单元格中的秒数   具有不同用户权限的Java文件夹/文件创建   java我可以检查Firebase ValueEventListener onDataChanged是否已被调用吗?   尽管获得了用户权限,java Android开发文件权限仍被拒绝   java如何使用JPA映射map<EnumType,Double>?   java是否使用UI线程显示toast消息?   JAVAlang.IllegalArgumentException:不支持的元素:rss   java Android setRequestedOrientation活动和视图生命周期   安卓如何在Java中定义支票盒?   在Java中,对于大输入,字符串解析长期失败   使Java在XP中按计划任务运行读取env用户变量时出现问题   任务“:workflowsjava:NodeDriver”的梯度执行失败。main()   java如何检测是否只设置了部分属性?   在客户端web服务上使用JBossWS时,java无法找到/更改log4j的默认配置   java LibGDX写入文本文件并接收各种错误