国家字符转写模块。
项目描述
此模块将国家字符转换为类似发音的拉丁字符(转写)。目前支持捷克语、希腊语、拉脱维亚语、波兰语、土耳其语、俄语、乌克兰语、哈萨克语和波斯语字母(覆盖了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 |