betacode到unicode转换。
betacode的Python项目详细描述
贝塔科德
将betacode转换为unicode,反之亦然。在Python3.4上测试, 3.5和3.6。使用的定义是基于在TLG Beta Code Manual中找到的内容。只有 希腊部分受到关注。
动机
我在做一个经典研究项目,不得不用英仙座 从目录中提取一些希腊作品。但令我惊讶的是, 我唯一能找到的下载是betacode版本。一种编码 超过30岁,而不是现代,花哨,干净的Unicode。曾经 没有好的pip包,我可以很容易地去完成这个简单的任务,所以我 决定自己滚。
安装
安装很容易。使用pip或您喜欢的方法下载 从皮皮。
pip install betacode
使用量
注意,在所有示例中,字符串都是Unicode编码的。输入可以在 大写或小写。TLG的官方定义仅使用 大写,但许多资源(如英仙座目录)都是编码的 小写,所以这个包同时接受这两个。这个包裹也可以 无视希腊变音符号不必要的发音顺序 官方定义。唯一重要的是 betacode需要明确的是,每个单元必须以 *或一封信。只要遵循这些约束,呼吸 标记、口音等可以按任何顺序排列。然而,插管 从Unicode转到Betacode时将返回订单。另请注意 目前,只处理单个的非组合字符。 这意味着你不能把字母和 变音符号。只有那些在希腊语和 Unicode的扩展希腊语部分。
Betacode到Unicode
import betacode.conv
beta = 'analabo/ntes de\ kaq\' e(/kaston'
betacode.conv.beta_to_uni(beta) # αναλαβόντες δὲ καθ᾽ ἕκαστον
注意,将使用多音重音符号,而不是单调重音 标志。两者在法律上在希腊都是对等的,但贝塔科德最初是 发展成编码经典作品,使多声调变音符号 适合的。换言之,将使用牛_a而不是tónos。 oxe_a form也可以很容易地转换为现代重音形式 通过搜索和替换,或者从oxe_a开始的unicode规范化 典型分解成tónos.
使用strict标志也可以使转换更加严格。
beta_to_uni(text, strict=False)
如果设置了,在betacode中只接受发音符号的插入顺序。 如果没有设置,那么只要是大写字母,任何订单都是允许的 以*开头,小写字母以字母开头,而不是 变音。
Unicode到Betacode
import betacode.conv
uni = 'αναλαβόντες δὲ καθ᾽ ἕκαστον'
betacode.conv.uni_to_beta(uni) # analabo/ntes de\ kaq\' e(/kaston
Unicode文本可以使用多音(oxe_a)重音标记或单调 (tónos)可以使用重音符号。
速度
原始实现使用自定义的trie。这也许不是 最快的(我不确定)。所以,我对比了第三方 实现,pygtrie。pygtrie有更好的前缀方法 允许更快地处理大型文本。这改变了 将英仙座目录中的斯特拉波或希罗多德从许多 从分钟手术到3-4秒手术。我见过实现 我怀疑使用正则表达式可能更快,因为 底层实现在C中,但是这个包要小得多 如果betacode转换比cltk更简单 例子。
改性betacode
有人说我在 互联网。我从来没有找到一个明确的定义 所以我还没有实施。在一些区别中,有final sigma这个词 用法,_为长音符,大写和小写罗马字母 而不是使用*。
开发
我不是古典主义者,这是在我空闲的时候做的。它是非常 可能的有几封信不见了 或者一些标点符号处理不当。如果是这样的话, 请告诉我,因为它很容易修复,或请打开一个公关为您自己 分支如果添加了功能,请编写测试。