用不同的字母检测相同的单词?

2024-04-20 12:39:54 发布

您现在位置:Python中文网/ 问答频道 /正文

Python对单词МАМАMAMA的处理方式不同,因为其中一个是用拉丁语编写的,另一个是用西里尔语编写的。你知道吗

如何让python将它们视为一个字符串?你知道吗

我只关心变形。你知道吗


Tags: 字符串方式单词变形关心mama
3条回答

有一个python库可以将西里尔语翻译成拉丁unicode,名为^{}

>>> from transliterate import translit
>>> 
>>> cy = u'\u041c\u0410\u041c\u0410'
>>> en = u'MAMA'
>>> cy == en
False
>>> cy_converted = translit(cy, 'ru', reversed=True)
>>> cy_converted == en
True
>>> cy_converted
u'MAMA'

音译是没有帮助的(它会把西里尔字母p变成拉丁字母R)。乍一看,Unicode兼容形式(NFKD或NFKC)看起来很有希望,但这会将U+041C(西里尔大写字母EM)变成U+041C(而不是U+004D(拉丁文大写字母EM))——所以这行不通。你知道吗

唯一的解决方案是构建自己的同构表,并在比较之前将所有字符串转换为规范形式。你知道吗

注意:当我说“西里尔字母p”时,我作弊并使用了拉丁语变体-我没有一个简单的方法来输入西里尔字母。你知道吗

相关问题 更多 >