Форум сайта python.su
0
Вобщем, дано слово по русски нужно перевести его транлитом (задачка придумана с потолка) вот до чего получилось дойти:
#!/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)
Отредактировано lecksys (Март 24, 2014 11:48:56)
Офлайн
568
alf_dict = {'А': 'a', 'Б': 'b', 'Ц': 'с', 'Д': 'd', 'Е': 'e', 'Ф': 'f'} stroka = 'ФЕАДЦБА' for original, translit in alf_dict.items(): stroka = stroka.replace(original, translit) print(stroka)
Офлайн
translate лучше юзать в этом случае (это я для тс).
Офлайн
0
а как можно указать два ключа для одного значения?
что такое translate и где о нём почитать?
Ну а так, это больше академический интерес чтоб попробывать словари, строки и цикл for
спасибо! translate и maketrans действительно прикольные штуки:
print("абрвал... халк хочет кушать! халк будет ломать!!!".translate(str.maketrans('абвгдежзиклмнопрстуфхцшщчяь', "abvgdezziklmnoprstufhcss4y'")))
Отредактировано lecksys (Март 24, 2014 16:45:35)
Офлайн
857
lecksys
Но как реализовать буквы типа ж -> zh и им подобные?
>>> 'жжж'.translate(str.maketrans({'ж': 'zh'})) 'zhzhzh' >>>
>>> td = str.maketrans('абв', 'abv') >>> td.update(str.maketrans({'ж': 'zh'})) >>> >>> 'абвжжж'.translate(td) 'abvzhzhzh' >>>
Отредактировано py.user.next (Март 25, 2014 01:26:33)
Офлайн
0
Поправил свой первоначальный вариант (теперь тоже работает)
#!/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)
Офлайн
26
Всё уже написано. Мной.
https://pypi.python.org/pypi/trans
Офлайн
0
Да действительно крутая штука, спасибо. Но мне это было интересно с академической точки зрения - пощупать, посмотреть, т.к. я ещё только учусь
Офлайн