Transliteration from UA to EN with python

Transliteration UA to EN are based on Resolution of the Cabinet of Ministers of Ukraine #55 (01.27.2010)

Python code
ukr_eng_chars = {
    'зг': 'zgh',
    'а': 'a',
    'б': 'b',
    'в': 'v',
    'г': 'h',
    'ґ': 'g',
    'д': 'd',
    'е': 'e',
    'ж': 'zh',
    'з': 'z',
    'и': 'y',
    'і': 'i',
    'к': 'k',
    'л': 'l',
    'м': 'm',
    'н': 'n',
    'о': 'o',
    'п': 'p',
    'р': 'r',
    'с': 's',
    'т': 't',
    'у': 'u',
    'ф': 'f',
    'х': 'kh',
    'ц': 'ts',
    'ч': 'ch',
    'ш': 'sh',
    'щ': 'shch',
    'ь': ''
}

lines = []
with open('namesUA.txt', 'r') as file:
    for line in file:
        parts = line.strip().lower().split()
        newparts = ''
        newline = ''
        for part in parts:
            newpart = ''
            for char in part:
                if char in ukr_eng_chars.keys():
                    newpart += ukr_eng_chars.get(char)
                elif (char == 'є'):
                    if len(newpart) == 0:
                        newpart += 'ye'
                    else:
                        newpart += 'ie'
                elif (char == 'ї'):
                    if len(newpart) == 0:
                        newpart += 'yi'
                    else:
                        newpart += 'i'
                elif (char == 'й'):
                    if len(newpart) == 0:
                        newpart += 'y'
                    else:
                        newpart += 'i'
                elif (char == 'ю'):
                    if len(newpart) == 0:
                        newpart += 'yu'
                    else:
                        newpart += 'iu'
                elif (char == 'я'):
                    if len(newpart) == 0:
                        newpart += 'ya'
                    else:
                        newpart += 'ia'
                else:
                    newpart += ''
            newparts += newpart + ' '
        lines.append(newparts.strip().title())
with open('namesEN.txt', 'w') as file:
    for line in lines:
        file.write(line + '\n')

Комментарии

Популярные сообщения из этого блога

Today's activity report #17