国家字符转写模块。
项目描述
此模块将国家字符转换为类似发音的拉丁字符(转写)。目前支持捷克语、希腊语、拉脱维亚语、波兰语、土耳其语、俄语、乌克兰语、哈萨克语和波斯语字母(覆盖了99%的需求)。
简单用法
非常容易使用
Python 3
>>> from trans import trans >>> trans('Привет, Мир!')
Python 2
>>> import trans >>> u'Привет, Мир!'.encode('trans') u'Privet, Mir!' >>> trans.trans(u'Привет, Мир!') u'Privet, Mir!'
仅与unicode字符串一起工作
>>> 'Hello World!'.encode('trans') Traceback (most recent call last): ... TypeError: trans codec support only unicode string, <type 'str'> given.
这是可读性
>>> s = u'''\ ... -- Раскудрить твою через коромысло в бога душу мать ... триста тысяч раз едрену вошь тебе в крыло ... и кактус в глотку! -- взревел разъяренный Никодим. ... -- Аминь, -- робко добавил из склепа папа Пий. ... (c) Г. Л. Олди, "Сказки дедушки вампира".''' >>> >>> print s.encode('trans') -- Raskudrit tvoyu cherez koromyslo v boga dushu mat trista tysyach raz edrenu vosh tebe v krylo i kaktus v glotku! -- vzrevel razyarennyy Nikodim. -- Amin, -- robko dobavil iz sklepa papa Piy. (c) G. L. Oldi, "Skazki dedushki vampira".
表“slug”
使用“slug”表,仅保留拉丁字母、数字和下划线
>>> print u'1 2 3 4 5 \n6 7 8 9 0'.encode('trans') 1 2 3 4 5 6 7 8 9 0 >>> print u'1 2 3 4 5 \n6 7 8 9 0'.encode('trans/slug') 1_2_3_4_5__6_7_8_9_0 >>> s.encode('trans/slug')[-42:-1] u'_c__G__L__Oldi___Skazki_dedushki_vampira_'
表“id”
表“id”已弃用,重命名为“slug”。旧名称也适用,但不太推荐。
定义用户表
简单变体
>>> u'1 2 3 4 5 6 7 8 9 0'.encode('trans/my') Traceback (most recent call last): ... ValueError: Table "my" not found in tables! >>> trans.tables['my'] = {u'1': u'A', u'2': u'B'}; >>> u'1 2 3 4 5 6 7 8 9 0'.encode('trans/my') u'A_B________________' >>>
稍微困难一些
表可以由两部分组成 - 双元音映射和字符映射。首先通过简单替换处理双元音。然后根据字符映射替换接收到的字符串中的每个字符。如果字符不在字符映射中,则检查键 None。如果键 None 不存在,则使用默认字符 u’_’。
>>> diphthongs = {u'11': u'AA', u'22': u'BB'} >>> characters = {u'a': u'z', u'b': u'y', u'c': u'x', None: u'-', ... u'A': u'A', u'B': u'B'} # See below... >>> trans.tables['test'] = (diphthongs, characters) >>> u'11abc22cbaCC'.encode('trans/test') u'AAzyxBBxyz--'
字符通过处理双元音和符号映射来创建
>>> diphthongs = {u'11': u'AA', u'22': u'BB'} >>> characters = {u'a': u'z', u'b': u'y', u'c': u'x', None: u'-'} >>> trans.tables['test'] = (diphthongs, characters) >>> u'11abc22cbaCC'.encode('trans/test') u'--zyx--xyz--'
没有双元音
这两个表是等价的
>>> characters = {u'a': u'z', u'b': u'y', u'c': u'x', None: u'-'} >>> trans.tables['t1'] = characters >>> trans.tables['t2'] = ({}, characters) >>> u'11abc22cbaCC'.encode('trans/t1') == u'11abc22cbaCC'.encode('trans/t2') True
变更日志
2.1 2016-09-19
添加波斯语字母(感谢 rodgar-nvkz)
使用 pytest
一些代码重构
2.0 2013-04-01
Python 3 支持
class Trans 用于创建不同的表格空间
1.5 2012-09-12
添加哈萨克语字母的支持。
1.4 2011-11-29
将许可证更改为 BSD。
1.3 2010-05-18
表“id”重命名为“slug”。旧名称也适用。
一些速度优化(感谢 AndyLegkiy <andy.legkiy at gmail.com>)。
1.2 2010-01-10
首次公开发布。
将文档翻译成英语。
最后
- 特别感谢Yuri Yurevich aka j2a为正确方向提供的推动。
我为我的糟糕英语道歉。我保证会改正。
项目详情
关闭
trans-2.1.0.tar.bz2的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 417d8f7862a4a01470bdf0ab2a96b60983e459d202c1b12e8df3fa563146b71f |
|
MD5 | ad37b092be2d41f49dee4662bd9982d7 |
|
BLAKE2b-256 | 3ec1368daee29d1c9b081c8c1eeda2335879c484021d795b12bd116bd134d98f |