Делаю словарик, в котором русские буквы сопоставлены английским и функцию перевода, файл со скриптом в utf-8.
conversion = {'а' : 'a', 'б' : 'b', 'в' : 'v', 'г' : 'g', 'д' : 'd', 'е' : 'e', 'ё' : 'e',
'ж' : 'zh', 'з' : 'z', 'и' : 'i', 'й' : 'j', 'к' : 'k', 'л' : 'l', 'м' : 'm',
'н' : 'n', 'о' : 'o', 'п' : 'p', 'р' : 'r', 'с' : 's', 'т' : 't', 'у' : 'u',
'ф' : 'f', 'х' : 'h', 'ц' : 'c', 'ч' : 'ch', 'ш' : 'sh', 'щ' : 'sch', 'ь' : "i",
'ы' : 'y', 'ь' : "i", 'э' : 'e', 'ю' : 'ju', 'я' : 'ja', ' ' : ' '}
def translit(key):
name = ""
for lt in key:
try:
lt = conversion[lt]
except KeyError:
alpha = "abcdefghijklmnopqrstuvwxyz"
if not lt in alpha:
lt = "-"
name += lt
return nameБеру слова из файла (он тоже в utf-8), пытаюсь применить к ним функцию translit - не выходит. Насколько понял - это из-за того, что у словаря своё представление строк типа \xd33. Как быть? Пока выкручиваюсь таким образом, ставлю у файла скрипта кодировку cp1251 и перевожу слово в эту же кодировку decode('utf8').encode('cp1251'), так всё получается.