2017-02-08 18 views
0

Мне нужно создать программу, которая будет транслитерировать по-разному русские имена на английский.Измененная интерпретация с русского языка на английский

Например, русская фамилия:

Муравь

Возможная интерпретация на английском языке:

Муравьи; Myravyev; Муравьи; Муравьи; Муравьи; Муравьи; Муравьи; Murav'ov; Муравьи; Муравьи; Муравьи; Muravieff; Mouravief; Muravief; Muraviof; Muravioff;

Я нашел существующую транслитерацию Пакет Python transliterate_1.9, он имеет стандартизованную форму транслитерации с кириллического на английский. Проблема в том, что мне нужна еще одна возможная интерпретация на английском языке. Я думал о замене метода в Python, но не понял, как сделать правильный код.

К этому времени у меня есть это:

def translit(string): 

capital_letters = { 
    u'А': u'A', 
    u'Б': u'B', 
    u'В': u'V', 
    u'Г': u'G', 
    u'Д': u'D', 
    u'Е': u'E', 
    u'Ё': u'E', 
    u'Ж': u'Zh', 
    u'З': u'Z', 
    u'И': u'I', 
    u'Й': u'Y', 
    u'К': u'K', 
    u'Л': u'L', 
    u'М': u'M', 
    u'Н': u'N', 
    u'О': u'O', 
    u'П': u'P', 
    u'Р': u'R', 
    u'С': u'S', 
    u'Т': u'T', 
    u'У': u'U', 
    u'Ф': u'F', 
    u'Х': u'H', 
    u'Ц': u'Ts', 
    u'Ч': u'Ch', 
    u'Ш': u'Sh', 
    u'Щ': u'Sch', 
    u'Ъ': u'', 
    u'Ы': u'Y', 
    u'Ь': u'', 
    u'Э': u'E', 
    u'Ю': u'Yu', 
    u'Я': u'Ya' 
} 

lower_case_letters = { 
    u'а': u'a', 
    u'б': u'b', 
    u'в': u'v', 
    u'г': u'g', 
    u'д': u'd', 
    u'е': u'e', 
    u'ё': u'e', 
    u'ж': u'zh', 
    u'з': u'z', 
    u'и': u'i', 
    u'й': u'y', 
    u'к': u'k', 
    u'л': u'l', 
    u'м': u'm', 
    u'н': u'n', 
    u'о': u'o', 
    u'п': u'p', 
    u'р': u'r', 
    u'с': u's', 
    u'т': u't', 
    u'у': u'u', 
    u'ф': u'f', 
    u'х': u'h', 
    u'ц': u'ts', 
    u'ч': u'ch', 
    u'ш': u'sh', 
    u'щ': u'sch', 
    u'ъ': u'', 
    u'ы': u'y', 
    u'ь': u'', 
    u'э': u'e', 
    u'ю': u'yu', 
    u'я': u'ya' 
} 

translit_string = "" 

for index, char in enumerate(string): 
    if char in lower_case_letters.keys(): 
     char = lower_case_letters[char] 
    elif char in capital_letters.keys(): 
     char = capital_letters[char] 
     if len(string) > index+1: 
      if string[index+1] not in lower_case_letters.keys(): 
       char = char.upper() 
     else: 
      char = char.upper() 
    translit_string += char 

return translit_string 

Я новый кодер и программирование в примерно 2-3 месяца и узнал Лил немного Python. Могу ли я использовать or в строках, чтобы получить другие возможные ответы? Или, может быть, как использовать здесь replacing method, чтобы получить и другие возможные ответы.

+3

Вы должны уточнить свой вопрос с результатами, которые вы получите, и результатами, которые вы ожидаете. – Soviut

+1

Посмотрите, как создать [mcve] –

+0

Очевидно, что из вашего примера одно кириллическое письмо может быть транслитерировано на MULTIPLE Latin replacement. Замены могут иметь более 1 символа. Например. Кириллический нижний регистр y можно заменить латинскими 'y',' u' или 'ou'. Вам нужно, чтобы один большой диктофон отображал одиночные кириллические символы в список или кортеж замен ... одна запись была бы «y»: ['u', 'y', 'ou']. Я не вижу смысла иметь 2 диктата, один для заглавных букв и один для небольших букв. –

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^