Skip to content

Instantly share code, notes, and snippets.

@ledovsky
Last active March 30, 2024 21:37
Show Gist options
  • Star 23 You must be signed in to star a gist
  • Fork 8 You must be signed in to fork a gist
  • Save ledovsky/6398962 to your computer and use it in GitHub Desktop.
Save ledovsky/6398962 to your computer and use it in GitHub Desktop.
Транслитерация на python
# 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
@linuxoid69
Copy link

У тебя бага вот тут -> 'Ф':'Х'

@repen
Copy link

repen commented Jul 22, 2019

норм не перввый раз юзаю

@company-ms
Copy link

Класс

@Pendalf61
Copy link

Спасибо, помогло. Немного поправил

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

@homus32
Copy link

homus32 commented Sep 12, 2020

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',
    '—': '-'
}

@NickVeld
Copy link

NickVeld commented Oct 13, 2020

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

@nirvichara
Copy link

nirvichara commented Oct 29, 2020

Господа, не занимайтесь херней. Транслитерацию надо делать в обратном порядке - с латиницы на русский , чтобы помочь русским людям читать английские слова без знания транскрипции. А вы помогаете буржуям которые во первых вас ненависят, а во вторых им русский на хер не нужен.

@nirvichara
Copy link

Более полезна фонетическая транкрипция а не один-в один

@ledovsky
Copy link
Author

Друзья, простите, я скопировал откуда-то этот код очень очень давно, когда было нужно)
Давайте поправлю ошибки, раз этот код находят и используют)

@ledovsky
Copy link
Author

Господа, не занимайтесь херней. Транслитерацию надо делать в обратном порядке - с латиницы на русский , чтобы помочь русским людям читать английские слова без знания транскрипции. А вы помогаете буржуям которые во первых вас ненависят, а во вторых им русский на хер не нужен.

камон =)

@ledovsky
Copy link
Author

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

Вроде бы все поправил =)

@sabovruslan
Copy link

sabovruslan commented Dec 16, 2021

https://www.kmu.gov.ua/npas/243262567
Є прийняті правила транслітерації, замінити символи я знайшов багато робочих способів, але щоб дотриматись всіх правил не вдається, а саме "ЗГ" та деякі букви по різному мають заміняютись залежно від позиції в слові..

@petrovkarmm
Copy link

Господа, не занимайтесь херней. Транслитерацию надо делать в обратном порядке - с латиницы на русский , чтобы помочь русским людям читать английские слова без знания транскрипции. А вы помогаете буржуям которые во первых вас ненависят, а во вторых им русский на хер не нужен.

Не согласен. Сам сейчас проект на django пишу, беру слаги из тайтла, по итогу джанговский слагофай не пропускат русские символы, приходится сторонние библиотеки искать, что перед сохранением тайтл для слага менял XD. Ситуации то разные бывают.

@ergodeath
Copy link

Господа, не занимайтесь херней. Транслитерацию надо делать в обратном порядке - с латиницы на русский , чтобы помочь русским людям читать английские слова без знания транскрипции. А вы помогаете буржуям которые во первых вас ненависят, а во вторых им русский на хер не нужен.

сильно

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment