我需要找到一种方法将其他语言的单词重写为英语。例如привет
(俄语)听起来像Privet(英语)。
意义和语法并不重要,但我希望它有更类似的声音,所有应该是Python,我已经努力地在互联网上查找并且找不到好方法。
例如,类似于此:
translit("юу со беутифул", "ru") = juu so beutiful
translit("кар", "ru") = kar
答案 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