Удалить специальные символы из строки

У меня есть строка "Mikael Håfström", которая содержит некоторые специальные символы, как удалить это с помощью python?

Ответ 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 г.) выполняется локально, и проблема присутствует, хотя я уверен, что она может быть решена с более новыми версиями.

Ответ 2

Например, используя метод кодирования: u"Mikael Håfström".encode("ascii", "ignore")

Ответ 3

См. статью effbot (включая код). Там, где это возможно, он делает разумные транслитерации в символы ASCII. Можно расширить встроенную таблицу преобразования для обработки многих других символов (например, тех, которые используются на восточноевропейских языках), которые не имеют канонического разложения.