跳转到主要内容

国家字符转写模块。

项目描述

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

  • 首次公开发布。

  • 将文档翻译成英语。

最后

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

trans-2.1.0.tar.bz2 (6.9 kB 查看哈希)

上传时间 源代码

由以下支持