-
-
Save ledovsky/6398962 to your computer and use it in GitHub Desktop.
# name: это строка которую транслитим | |
def transliterate(name): | |
""" | |
Автор: LarsKort | |
Дата: 16/07/2011; 1:05 GMT-4; | |
Не претендую на "хорошесть" словарика. В моем случае и такой пойдет, | |
вы всегда сможете добавить свои символы и даже слова. Только | |
это нужно делать в обоих списках, иначе будет ошибка. | |
""" | |
# Слоаврь с заменами | |
slovar = {'а':'a','б':'b','в':'v','г':'g','д':'d','е':'e','ё':'yo', | |
'ж':'zh','з':'z','и':'i','й':'i','к':'k','л':'l','м':'m','н':'n', | |
'о':'o','п':'p','р':'r','с':'s','т':'t','у':'u','ф':'f','х':'h', | |
'ц':'c','ч':'ch','ш':'sh','щ':'sch','ъ':'','ы':'y','ь':'','э':'e', | |
'ю':'u','я':'ya', 'А':'A','Б':'B','В':'V','Г':'G','Д':'D','Е':'E','Ё':'YO', | |
'Ж':'ZH','З':'Z','И':'I','Й':'I','К':'K','Л':'L','М':'M','Н':'N', | |
'О':'O','П':'P','Р':'R','С':'S','Т':'T','У':'U','Ф':'F','Х':'H', | |
'Ц':'C','Ч':'CH','Ш':'SH','Щ':'SCH','Ъ':'','Ы':'y','Ь':'','Э':'E', | |
'Ю':'U','Я':'YA',',':'','?':'',' ':'_','~':'','!':'','@':'','#':'', | |
'$':'','%':'','^':'','&':'','*':'','(':'',')':'','-':'','=':'','+':'', | |
':':'',';':'','<':'','>':'','\'':'','"':'','\\':'','/':'','№':'', | |
'[':'',']':'','{':'','}':'','ґ':'','ї':'', 'є':'','Ґ':'g','Ї':'i', | |
'Є':'e', '—':''} | |
# Циклически заменяем все буквы в строке | |
for key in slovar: | |
name = name.replace(key, slovar[key]) | |
return name |
норм не перввый раз юзаю
Класс
Спасибо, помогло. Немного поправил
def transliterate(name):
"""
Автор: LarsKort
Дата: 16/07/2011; 1:05 GMT-4;
Не претендую на "хорошесть" словарика. В моем случае и такой пойдет,
вы всегда сможете добавить свои символы и даже слова. Только
это нужно делать в обоих списках, иначе будет ошибка.
"""
# Слоаврь с заменами
slovar = {'а':'a','б':'b','в':'v','г':'g','д':'d','е':'e','ё':'e',
'ж':'zh','з':'z','и':'i','й':'i','к':'k','л':'l','м':'m','н':'n',
'о':'o','п':'p','р':'r','с':'s','т':'t','у':'u','ф':'f','х':'h',
'ц':'c','ч':'cz','ш':'sh','щ':'scz','ъ':'','ы':'y','ь':'','э':'e',
'ю':'u','я':'ja', 'А':'A','Б':'B','В':'V','Г':'G','Д':'D','Е':'E','Ё':'E',
'Ж':'ZH','З':'Z','И':'I','Й':'I','К':'K','Л':'L','М':'M','Н':'N',
'О':'O','П':'P','Р':'R','С':'S','Т':'T','У':'U','Ф':'F','Х':'H',
'Ц':'C','Ч':'CZ','Ш':'SH','Щ':'SCH','Ъ':'','Ы':'y','Ь':'','Э':'E',
'Ю':'U','Я':'YA',',':'','?':'',' ':'_','~':'','!':'','@':'','#':'',
'$':'','%':'','^':'','&':'','*':'','(':'',')':'','-':'','=':'','+':'',
':':'',';':'','<':'','>':'','\'':'','"':'','\\':'','/':'','№':'',
'[':'',']':'','{':'','}':'','ґ':'','ї':'', 'є':'','Ґ':'g','Ї':'i',
'Є':'e', '—':''}
# Циклически заменяем все буквы в строке
for key in slovar:
name = name.replace(key, slovar[key])
return name
dictionary = {
'а': 'a',
'б': 'b',
'в': 'v',
'г': 'g',
'д': 'd',
'е': 'e',
'ё': 'e',
'ж': 'zh',
'з': 'z',
'и': 'i',
'й': 'i',
'к': 'k',
'л': 'l',
'м': 'm',
'н': 'n',
'о': 'o',
'п': 'p',
'р': 'r',
'с': 's',
'т': 't',
'у': 'u',
'ф': 'f',
'х': 'h',
'ц': 'c',
'ч': 'cz',
'ш': 'sh',
'щ': 'scz',
'ъ': '',
'ы': 'y',
'ь': 'b',
'э': 'e',
'ю': 'u',
'я': 'ja',
'А': 'A',
'Б': 'B',
'В': 'V',
'Г': 'G',
'Д': 'D',
'Е': 'E',
'Ё': 'E',
'Ж': 'ZH',
'З': 'Z',
'И': 'I',
'Й': 'I',
'К': 'K',
'Л': 'L',
'М': 'M',
'Н': 'N',
'О': 'O',
'П': 'P',
'Р': 'R',
'С': 'S',
'Т': 'T',
'У': 'U',
'Ф': 'F',
'Х': 'H',
'Ц': 'C',
'Ч': 'CZ',
'Ш': 'SH',
'Щ': 'SCH',
'Ъ': '',
'Ы': 'y',
'Ь': 'b',
'Э': 'E',
'Ю': 'U',
'Я': 'YA',
',': ',',
'?': '?',
' ': '_',
'~': '~',
'!': '!',
'@': '@',
'#': '#',
'$': '$',
'%': '%',
'^': '^',
'&': '&',
'*': '*',
'(': '(',
')': ')',
'-': '-',
'=': '=',
'+': '+',
':': ':',
';': ';',
'<': '<',
'>': '>',
'\'': '\'',
'"': '"',
'\\': '\\',
'/': '/',
'№': '#',
'[': '[',
']': ']',
'{': '{',
'}': '}',
'ґ': 'r',
'ї': 'r',
'є': 'e',
'Ґ': 'g',
'Ї': 'i',
'Є': 'e',
'—': '-'
}
For the author (or future users if the gist won't be changed) :
'я':'ja'
'Я': 'YA'
Choose either "j" or "y"
"ё" is "yo" or "jo" not "e"
"ч" is "ch" not "cz"
"щ" is "sch" or "shh" not "scz"
'Ы': 'y'
- the case can be saved
Господа, не занимайтесь херней. Транслитерацию надо делать в обратном порядке - с латиницы на русский , чтобы помочь русским людям читать английские слова без знания транскрипции. А вы помогаете буржуям которые во первых вас ненависят, а во вторых им русский на хер не нужен.
Более полезна фонетическая транкрипция а не один-в один
Друзья, простите, я скопировал откуда-то этот код очень очень давно, когда было нужно)
Давайте поправлю ошибки, раз этот код находят и используют)
Господа, не занимайтесь херней. Транслитерацию надо делать в обратном порядке - с латиницы на русский , чтобы помочь русским людям читать английские слова без знания транскрипции. А вы помогаете буржуям которые во первых вас ненависят, а во вторых им русский на хер не нужен.
камон =)
For the author (or future users if the gist won't be changed) :
'я':'ja'
'Я': 'YA'
Choose either "j" or "y"
"ё" is "yo" or "jo" not "e"
"ч" is "ch" not "cz"
"щ" is "sch" or "shh" not "scz"
'Ы': 'y'
- the case can be saved
Вроде бы все поправил =)
https://www.kmu.gov.ua/npas/243262567
Є прийняті правила транслітерації, замінити символи я знайшов багато робочих способів, але щоб дотриматись всіх правил не вдається, а саме "ЗГ" та деякі букви по різному мають заміняютись залежно від позиції в слові..
Господа, не занимайтесь херней. Транслитерацию надо делать в обратном порядке - с латиницы на русский , чтобы помочь русским людям читать английские слова без знания транскрипции. А вы помогаете буржуям которые во первых вас ненависят, а во вторых им русский на хер не нужен.
Не согласен. Сам сейчас проект на django пишу, беру слаги из тайтла, по итогу джанговский слагофай не пропускат русские символы, приходится сторонние библиотеки искать, что перед сохранением тайтл для слага менял XD. Ситуации то разные бывают.
Господа, не занимайтесь херней. Транслитерацию надо делать в обратном порядке - с латиницы на русский , чтобы помочь русским людям читать английские слова без знания транскрипции. А вы помогаете буржуям которые во первых вас ненависят, а во вторых им русский на хер не нужен.
сильно
У тебя бага вот тут -> 'Ф':'Х'