-
Notifications
You must be signed in to change notification settings - Fork 0
/
ukrainian_transliteration.py
104 lines (98 loc) · 3.29 KB
/
ukrainian_transliteration.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def transliterate(text):
translit_table = {
'А': 'A', 'а': 'a',
'Б': 'B', 'б': 'b',
'В': 'V', 'в': 'v',
'Г': 'H', 'г': 'h',
'Ґ': 'G', 'ґ': 'g',
'Д': 'D', 'д': 'd',
'Е': 'E', 'е': 'e',
'Є': 'Ye', 'є': 'ie',
'Ж': 'Zh', 'ж': 'zh',
'З': 'Z', 'з': 'z',
'И': 'Y', 'и': 'y',
'І': 'І', 'і': 'і',
'Ї': 'Yi', 'ї': 'i',
'Й': 'Y', 'й': 'i',
'К': 'K', 'к': 'k',
'Л': 'L', 'л': 'l',
'М': 'M', 'м': 'm',
'Н': 'N', 'н': 'n',
'О': 'O', 'о': 'o',
'П': 'P', 'п': 'p',
'Р': 'R', 'р': 'r',
'С': 'S', 'с': 's',
'Т': 'T', 'т': 't',
'У': 'U', 'у': 'u',
'Ф': 'F', 'ф': 'f',
'Х': 'Kh', 'х': 'kh',
'Ц': 'Ts', 'ц': 'ts',
'Ч': 'Ch', 'ч': 'ch',
'Ш': 'Sh', 'ш': 'sh',
'Щ': 'Shch', 'щ': 'shch',
'Ю': 'Yu', 'ю': 'iu',
'Я': 'Ya', 'я': 'ia',
'ь': '', "'": ''
}
result = []
i = 0
while i < len(text):
if text[i:i + 2].lower() == 'зг':
result.append('Zgh' if text[i].isupper() else 'zgh')
i += 2
elif i == 0 and text[i] == 'Ї':
result.append('Yi')
i += 1
elif i == 0 and text[i] == 'ї':
result.append('yi')
i += 1
elif text[i] in translit_table:
if text[i] in 'ЄЇЙЮЯ' and i > 0 and text[i - 1].isalpha():
result.append(translit_table[text[i]].lower())
else:
result.append(translit_table[text[i]])
i += 1
else:
result.append(text[i])
i += 1
return ''.join(result)
# Примеры использования
examples = [
"Алушта Андрій",
"Борщагівка Борисенко",
"Вінниця Володимир",
"Гадяч Богдан Згурський",
"Ґалаґан Ґорґани",
"Донецьк Дмитро",
"Рівне Олег Есмань",
"Єнакієве Гаєвич Короп'є",
"Житомир Жанна Жежелів",
"Закарпаття Казимирчук",
"Медвин Михайленко",
"Іванків Іващенко",
"Їжакевич Кадиївка Мар'їне",
"Йосипівка Стрий Олексій",
"Київ Коваленко",
"Лебедин Леонід",
"Миколаїв Маринич",
"Ніжин Наталія",
"Одеса Онищенко",
"Полтава Петро",
"Решетилівка Рибчинський",
"Суми Соломія",
"Тернопіль Троць",
"Ужгород Уляна",
"Фастів Філіпчук",
"Харків Христина",
"Біла Церква Стеценко",
"Чернівці Шевченко",
"Шостка Кишеньки",
"Щербухи Гоща Гаращенко",
"Юрій Корюківка",
"Яготин Ярошенко Костянтин Знам'янка Феодосія"
]
for example in examples:
transliterated = transliterate(example)
print(f"{example} -> {transliterated}")