Найти - Пользователи
Полная версия: транслитирование.
Начало » Python для новичков » транслитирование.
1
lecksys
Вобщем, дано слово по русски нужно перевести его транлитом (задачка придумана с потолка) вот до чего получилось дойти:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
alf_dict = {'А': 'a', 'Б': 'b', 'Ц': 'с', 'Д': 'd', 'Е': 'e', 'Ф': 'f'}
stroka = 'ФЕАДЦБА'
for key in alf_dict:
    s = stroka.replace(key, alf_dict[str(key)])
    print(s)
Но в результате получаю шесть строк с изменёнными буквами, хотелось бы получить вывод ФЕАДЦБА => feadcba. Тыкните пальцем где я не прав?
FishHook
alf_dict = {'А': 'a', 'Б': 'b', 'Ц': 'с', 'Д': 'd', 'Е': 'e', 'Ф': 'f'}
stroka = 'ФЕАДЦБА'
for original, translit in alf_dict.items():
    stroka = stroka.replace(original, translit)
print(stroka)
dimy44
translate лучше юзать в этом случае (это я для тс).
lecksys
а как можно указать два ключа для одного значения?
что такое translate и где о нём почитать?
Ну а так, это больше академический интерес чтоб попробывать словари, строки и цикл for

спасибо! translate и maketrans действительно прикольные штуки:
print("абрвал... халк хочет кушать! халк будет ломать!!!".translate(str.maketrans('абвгдежзиклмнопрстуфхцшщчяь', "abvgdezziklmnoprstufhcss4y'")))
Но как реализовать буквы типа ж -> zh и им подобные?
dimy44
двойные уже с помощью replace.
py.user.next
lecksys
Но как реализовать буквы типа ж -> zh и им подобные?
>>> 'жжж'.translate(str.maketrans({'ж': 'zh'}))
'zhzhzh'
>>>

>>> td = str.maketrans('абв', 'abv')
>>> td.update(str.maketrans({'ж': 'zh'}))
>>> 
>>> 'абвжжж'.translate(td)
'abvzhzhzh'
>>>
lorien
Есть либа готовая: pytils
lecksys
Поправил свой первоначальный вариант (теперь тоже работает)
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
alf_dict = {'А': 'a', 'Б': 'b', 'Ц': 'с', 'Д': 'd', 'Е': 'e', 'Ф': 'f'}
stroka = 'ФЕАДЦБА'
for key in alf_dict.keys():
    stroka = stroka.replace(key, alf_dict[key])
print(stroka)
ZZZ
Всё уже написано. Мной.
https://pypi.python.org/pypi/trans
lecksys
Да действительно крутая штука, спасибо. Но мне это было интересно с академической точки зрения - пощупать, посмотреть, т.к. я ещё только учусь
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB