I'm trying to replace a string that contains letters from the English keyboard "gjceljvjtxyfz" to the corresponding Russian "посудомоечная". I am NOT trying to translate or transliterate from English to Russian, but to replace the English letters with the corresponding letters on the Russian keyboard. I haven't found any Python libraries or useful code to solve this problem. Any help would be appreciated.
Asked
Active
Viewed 1,306 times
2
-
What you seek is called **transliteration** and you can check this similar question already asked here: https://stackoverflow.com/q/14173421/4636715 – vahdet Jul 13 '20 at 07:47
-
@vahdet no that's not what I'm seeking. I want to replace the letters in the English keyboard with the ones in Russian. For instance: "qwerty" should be replaced with "йцукен" – Vadim Katsemba Jul 13 '20 at 07:55
-
@vahdet There is no way that this is transliteration in the ordinary sense. That Russian word could be transliterated something like posudomoyechnaya. It shouldn't be a surprise that there isn't a word Russian pronounced gjceljvjtxyfz... – alani Jul 13 '20 at 07:55
-
Ah ok, sorry for that. Yet, I am not deleting in order not to make the mentioning comments obsolete. – vahdet Jul 13 '20 at 08:05
1 Answers
4
You can use the translate
method. It requires a mapping of integers (character codes) to characters (strings of length 1). You can create this mapping manually, like so:
translation = {}
translation[ord('q')] = 'й'
translation[ord('w')] = 'ц'
...
and then use it:
s1 = "gjceljvjtxyfz"
s2 = s1.translate(translation)
If you want to avoid long and inefficient code which creates the translation
table, you can use maketrans
:
translation = str.maketrans(dict(zip('qwerty','йцукен')))
The specifics are slightly different for Python 2 and 3; the code sections above are for Python 3.

anatolyg
- 26,506
- 9
- 60
- 134