Ответ 1
Ну, если вы действительно хотите перекодировать богатую строку юникода в простую строку ascii (и не против некоторых goofs), вы можете использовать это:
import unicodedata as ud
def shoehorn_unicode_into_ascii(s):
# This removes accents, but also other things, like ß‘’""
return ud.normalize('NFKD', s).encode('ascii','ignore')
Для более полного решения (с несколько меньшим количеством ошибок, но требующим стороннего модуля unidecode), см. этот ответ.
Действительно, лучшим решением является работа с данными Unicode по всему вашему коду в максимально возможной степени и переход к кодировке только при необходимости.