我需要一个 python 音译器,其配置方式与 PHP 音译器相同。我的基于 PHP 的音译器配置了以下规则:
$transliterator = Transliterator::createFromRules(
':: NFD;'
. ' :: [:Nonspacing Mark:] Remove;'
. ' :: NFC;'
. ' :: [:Punctuation:] Remove;'
. ' :: Lower();',
Transliterator::FORWARD
);
此时我正在使用Python的
slugify
库,这样我就可以获得足够接近的结果。这种二元性导致交叉依赖(php 和 python 之间)的音译文本必须在 PHP 的站点后端通过使用将返回音译字符串的 API 端点来完成。
有什么办法可以实现这个目标吗?
使用
PyICU
icu4c 的 Python 包装器。
假设您已经安装了 icu4c 并且可以访问 Python,请安装 PyICU:
pip install -U PyICU
PyICU 和 PHP 的语法几乎相同。唯一真正的区别是您需要为音译器添加标签:
icu.Transliterator.createFromRules(label, rules, direction)
所以:
import icu
rules = (
':: NFD;'
' :: [:Nonspacing Mark:] Remove;'
' :: NFC;'
' :: [:Punctuation:] Remove;'
' :: Lower();'
)
direction = icu.UTransDirection.FORWARD
transliterator = icu.Transliterator.createFromRules("customClean", rules, direction)
s = "Nāgārjuna!"
print(transliterator.transliterate(s))
# nagarjuna
同样,PyICU 将具有与 PHP 的 intl 相同的功能。