Ответ 1
Вы можете использовать модуль unicodedata
для нормализации строк юникода и кодирования их в форме ASCII следующим образом:
>>> import unicodedata
>>> source = u'Mikael Håfström'
>>> unicodedata.normalize('NFKD', source).encode('ascii', 'ignore')
'Mikael Hafstrom'
Одним из примечательных исключений является то, что буквы "đ" и "Đ" не распознаются Python, и они не кодируются в "d", поэтому они просто будут исключены из результата. Что озвученная альвеоло-небная аффриката присутствует в латинском алфавите некоторых языков ЮВЕ, поэтому она может или не может сразу касаться вас на основе вашей аудитории или независимо от того, поддерживаете ли вы полную поддержку набора символов Latin-1. В настоящее время у меня Python 2.6.5 (19 марта 2010 г.) выполняется локально, и проблема присутствует, хотя я уверен, что она может быть решена с более новыми версиями.