Unidecode поможет вам решить определенную форму этой проблемы.Unidecode преобразует не-ascii символы в ascii, например:
>>> from unidecode import unidecode
>>> unidecode(u"İstanbul")
'Istanbul'
Подобного эффекта можно добиться, разложив символы Unicode и удалив объединяющие диакритические знаки.Проблема с этой техникой заключается в том, что определенные символы не являются разложимыми .Таким образом, в то время как «ö» разложится на «o» и умлаут, «Ł» (L-ход) останется прежним.Unidecode успешно переводит «Ł» в «L».
Но Undeicode не решает все ваши проблемы;города могут быть известны под разными именами, или эти имена могут быть написаны по-разному.Например, в США мы называем столицу Китая «Пекин», но мы привыкли называть его «Пекин» (и по-шведски он по-прежнему называется «Пекин»), а перевод его имени с unidecode
дает нам еще кое-что:
>>> unidecode(u"\u5317\u4EB0")
'Bei Jing '
Лучшее решение - иметь список имен для конкретного языка и не использовать фактическое название города.