Как менять раскладку в Python? Тоесть "Привет" становится "Ghbdtn"

Как менять раскладку в Python? То есть в моей переменной есть строка "привет", и мне нужно поменять её на "ghbdtn".


Ответы (3 шт):

Автор решения: Константин Комиссаров

Создать словарь, в котором ключами будут буквы английского алфавита, а значениями - русского. Перебрать посимвольно строку и заменить все символы.

translator = {
    'a': 'ф',
    'b': 'и',
    'c': 'c'
    # и так далее
}

word = 'something'
translated_word = ''.join([translator[x] for x in word])

Ну, это в базовом виде. Хорошо было бы еще учесть, что кроме букв там могут быть и другие символы, например. Тогда можно сделать как-нибудь так

translated_word = ''.join([translator.get(x) or x for x in word])
→ Ссылка
Автор решения: Vadim.Sharoikin

ну можно так

def translit(text):
    cyrillic = 'привет'

    latin = 'g.h.b.d.t.n'.split('.') # таблица транслитерации 
    trantab = {k:v for k,v in zip(cyrillic,latin)}
    newtext = ''
    for ch in text:
        casefunc =  str.capitalize if ch.isupper() else str.lower
        newtext += casefunc(trantab.get(ch.lower(),ch))
    return newtext

print(translit('привет'))

в переменную cyrillic записать все русские буквы, а в latin их английские

→ Ссылка
Автор решения: gil9red

Составляете ассоциации и заменяете, например через str.translate:

def from_ghbdtn(text):
    layout = dict(zip(map(ord, '''qwertyuiop[]asdfghjkl;'zxcvbnm,./`QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>?~'''),
                               '''йцукенгшщзхъфывапролджэячсмитьбю.ёЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,Ё'''))

    return text.translate(layout)

text = 'B ,skb ghj,ktvs c ujcntdjq dhjlt ,s? gjcvjnhb '
print(from_ghbdtn(text))
→ Ссылка