与PHP相同规则的Python转写器

1 投票
1 回答
30 浏览
提问于 2025-04-12 19:51

我需要一个Python的转写工具,它的配置方式要和我用的PHP转写工具一样。我的PHP转写工具是按照这些规则配置的:

$transliterator = Transliterator::createFromRules(
    ':: NFD;'
    . ' :: [:Nonspacing Mark:] Remove;'
    . ' :: NFC;'
    . ' :: [:Punctuation:] Remove;'
    . ' :: Lower();',
    Transliterator::FORWARD
);

目前我在使用slugify这个库来处理Python中的转写,这样可以得到一个比较接近的结果。不过,这种双重处理导致了在PHP和Python之间相互依赖的转写文本必须在PHP的网站后端完成,使用一个API接口来返回转写后的字符串。

有没有什么办法可以解决这个问题呢?

1 个回答

0

使用 PyICU,这是一个Python的库,它是对icu4c的封装。

假设你已经安装了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相同的功能。

撰写回答