Форум сайта python.su
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png) 
			 
							 15
  15   
								
								Делаю словарик, в котором русские буквы сопоставлены английским и функцию перевода, файл со скриптом в 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Офлайн
 
							 0
  0   
								
								plusplusТоже с похожей проблемой проковырялся как-то два дня, но так до конца и не разобрался в причинах. Но решение выработал вполне универсальное (мне пока в таких случаях помогает): перевести всё в юникод, решить задачу, перевести в обратно.
представление строк типа \xd33
Офлайн
 
							 0
  0   
								
								plusplus
зачем оно тебе? Используй готовый модуль pytils
Офлайн
 
							 26
  26   
								
								Офлайн
 
							 15
  15   
								
								Спасибо за модули.
Офлайн
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png)