如何从另一个语言单词创建英文字母字符串?

2024-03-29 07:53:19 发布

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

我需要找到一种方法把一些语言的单词(音译)改写成英语。例如,привет(俄语)听起来像privet(英语)。在

意思和语法不重要,但我希望它听起来更相似。所有的东西都应该用Python编写,我已经努力地在网上查了一下,还没有找到一个好的方法。在

例如,与此类似的内容:

translit("юу со беутифул", "ru") = juu so beutiful

translit("кар", "ru") = kar

Tags: 方法语言内容音译soru语法单词
3条回答

也许你应该试试unidecode

>>> import unidecode
>>> unidecode.unidecode("юу со беутифул")
'iuu so beutiful'
>>> unidecode.unidecode("die größten Probleme")
'die grossten Probleme'
>>> unidecode.unidecode("Avec Éloïse, ils président à l'assemblée")
"Avec Eloise, ils president a l'assemblee"

使用pip安装它:

^{pr2}$

也许您已经在使用它;但是您可以使用^{}包。在

使用pip进行基本安装:

pip install transliterate

然后是密码

^{pr2}$

使用自定义类

正如@Schmuddi建议的那样,您可以创建自己的自定义类来处理德语特殊字符(但仅适用于python3.X)。在

pip3 install transliterate

那么代码:

# coding: utf-8

from transliterate import translit
from transliterate.base import TranslitLanguagePack, registry

class GermanLanguagePack(TranslitLanguagePack):
    language_code = "de"
    language_name = "Deutsch"

    pre_processor_mapping = {
        u"ß": u"ss",
    }

    mapping = (
        u"ÄÖÜäöü",
        u"AOUaou",
    )

registry.register(GermanLanguagePack)

print(translit(u"Die größten Katzenrassen der Welt", "de")) 
#Die grossten Katzenrassen der Welt

奖金,法国的:

class FrenchLanguagePack(TranslitLanguagePack):
    language_code = "fr"
    language_name = "French"

    pre_processor_mapping = {
        u"œ": u"oe",
        u"Œ": u"oe",
        u"æ": u"ae",
        u"Æ": "AE"
    }


    mapping = (
        u"àâçéèêëïîôùûüÿÀÂÇÉÈÊËÏÎÔÙÛÜŸ",
        u"aaceeeeiiouuuyAACEEEEIIOUUUY"
    )


registry.register(FrenchLanguagePack)

print(translit(u"Avec Éloïse, ils président à l'assemblée", 'fr'))
#Avec Eloise, ils president a l'assemblee

其他可能的解决方案

既然音译还不包括德语(还?),您可以使用另一个包直接翻译句子:^{}但它使用谷歌翻译,所以您确实需要互联网连接。在

使用pip进行基本安装:

pip install py-translate

那么你的代码:

# coding: utf-8

from translate import translator

print translator('ru', 'en', u"юу со беутифул")
print translator('de', 'en', u"Die größten Katzenrassen der Welt")

这是@lenz的另一种解决方案。但我确实喜欢@lenz的建议unidecode更好=)

Python - Replace non-ascii character in string (»)Can somone explain how unicodedata.normalize(form, unistr) work with examples?

要解析元音变音符、重音和坟墓:

>>> re.sub(r'[^\x00-\x7f]',r'', normalize('NFD', u"Avec Éloïse, ils président à l'assemblée"))
u"Avec Eloise, ils president a l'assemblee"

但它不能解决夏普-S字符和西里尔字母:

^{pr2}$

相关问题 更多 >