SOURCE_TRANSLITERATION_TABLE_UA_GB = """
а a
б b
в v
г h
ґ g
д d
е e
є ye
ж zh
з z
и ȳ
і i
ї yi
й ĭ
к k
л l
м m
н n
о o
п p
р r
с s
т t
у u
ф f
х kh
ц ts
ч ch
ш sh
щ shch
ь ʼ
ю yu
я ya
’ ˮ
"""
CITIES_UA = [
"Київ",
"Чернігів",
"Одеса",
"Львів",
"Полтава",
"Запоріжжя",
"Евпатория",
"Маріуполь",
"Донецьк",
"Миколаїв",
"Ужгород",
"Рівне",
"Луцьк"
]
def parse_table(source):
""" Parse string table. """
table = []
for line in source.splitlines():
row = line.split()
if row: # ignore empty lines
table.append(tuple(row))
return dict(table)
def add_capitals(table):
""" Add capital letters to the transliteration table. """
new_table = {}
for source, transcription in table.items():
new_table[source] = transcription
new_table[source.upper()] = transcription.capitalize()
return new_table
def transliterate(table, string):
""" Transliterate string using the given table. """
result = []
for letter in string:
result.append(
table.get(letter, letter)
)
return "".join(result)
table = parse_table(SOURCE_TRANSLITERATION_TABLE_UA_GB)
table = add_capitals(table)
for name in CITIES_UA:
print(f"{name} [{transliterate(table, name)}]")
The result should look like:
Київ [Kȳyiv]
Чернігів [Chernihiv]
Одеса [Odesa]
Львів [Lʼviv]
Полтава [Poltava]
Запоріжжя [Zaporizhzhya]
Евпатория [Evpatorȳya]
Маріуполь [Mariupolʼ]
Донецьк [Donetsʼk]
Миколаїв [Mȳkolayiv]
Ужгород [Uzhhorod]
Рівне [Rivne]
Луцьк [Lutsʼk]