2010-09-13 3 views
11

Как заменить символы non-ascii из строки unicode в Python?Заменить символы non-ascii из строки unicode в Python

Это есть выход I ОФЭКТ для заданных входов:

Musica -> Musica

КАРТОНА -> коробка

Каньо -> Cano

Myaybe с Dict где «а «является ключом и« а »значением?

+2

возможно дубликат [Что это лучший способ для удаления акцентов в строке питон юникода?] (Http://stackoverflow.com/questions/517923/what-is-the-best-way-to- Remove-акцентами-в-питон-Unicode-строки) – nosklo

ответ

21

Если все, что вам нужно сделать, это деградировать акцентированные символы их не-акцентированный эквивалент:

>>> import unicodedata 
>>> unicodedata.normalize('NFKD', u"m\u00fasica").encode('ascii', 'ignore') 
'musica' 
7

Теперь, только чтобы дополнить этот ответ: Это может быть так, что ваши данные не приходят в Юникода (т. е. вы читаете файл с другой кодировкой, и вы не можете префикс строки с «u»). Вот фрагмент, который тоже может работать (в основном для чтения файлов на английском языке).

import unicodedata 
unicodedata.normalize('NFKD',unicode(someString,"ISO-8859-1")).encode("ascii","ignore") 
Смежные вопросы