Как менять раскладку в 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))