如何用另一种语言单词用英文字母书写一个字符串?

时间:2017-02-23 17:55:12

标签: python nlp nltk translation

我需要找到一种方法将其他语言的单词重写为英语。例如привет(俄语)听起来像Privet(英语)。

意义和语法并不重要,但我希望它有更类似的声音,所有应该是Python,我已经努力地在互联网上查找并且找不到好方法。

例如,类似于此:

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

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

2 个答案:

答案 0 :(得分:1)

这是@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字符和西里尔字母:

>>> re.sub(r'[^\x00-\x7f]',r'', normalize('NFD', u"die größten Probleme"))
u'die groten Probleme'

>>> re.sub(r'[^\x00-\x7f]',r'', normalize('NFD', u"юу со беутифул"))
u'  '

答案 1 :(得分:1)

这是使用正则表达式的另一种可能的解决方案,您可以配置此功能来替换所需字符的特殊字符:

import re

def remove_accents(string):
    if type(string) is not unicode:
        string = unicode(string, encoding='utf-8')

    string = re.sub(u"[àáâãäå]", 'a', string)
    string = re.sub(u"[èéêë]", 'e', string)
    string = re.sub(u"[ìíîï]", 'i', string)
    string = re.sub(u"[òóôõö]", 'o', string)
    string = re.sub(u"[ùúûü]", 'u', string)
    string = re.sub(u"[ýÿ]", 'y', string)

    return string