Ответ 1
Чтение этого вопроса заставило меня пойти искать что-то лучшее.
https://pypi.python.org/pypi/Unidecode/0.04.1
Именно то, что вы просите.
Я ищу простую функцию Python, которая берет строку и возвращает аналогичную, но со всеми символами не-ascii, преобразованными в их ближайший эквивалент ascii. Например, диакритические знаки и многое другое. Я представляю, что должен быть довольно канонический способ сделать это, и есть много связанных вопросов с stackoverflow, но я не нахожу простой ответ, поэтому, похоже, стоит отдельный вопрос.
Пример ввода/вывода:
"Étienne" -> "Etienne"
Чтение этого вопроса заставило меня пойти искать что-то лучшее.
https://pypi.python.org/pypi/Unidecode/0.04.1
Именно то, что вы просите.
В Python 3 и с использованием реализации регулярного выражения в PyPI:
http://pypi.python.org/pypi/regex
Начиная со строки:
>>> s = "Étienne"
Нормализовать до NFKD, а затем удалить диакритические знаки:
>>> import unicodedata
>>> import regex
>>> regex.sub(r"\p{Mn}", "", unicodedata.normalize("NFKD", s))
'Etienne'
Выполнение поиска 'iconv TRANSLIT python' Я нашел: http://www.tablix.org/~avian/blog/archives/2009/01/unicode_transliteration_in_python/, который выглядит так, как будто это может быть то, что вам нужно. В комментариях есть некоторые другие идеи, которые используют стандартную библиотеку.
Там также http://web.archive.org/web/20070807224749/http://techxplorer.com/2006/07/18/converting-unicode-to-ascii-using-python/, который использует NFKD для получения базовых символов, где это возможно.
Прочитайте ответы на некоторые из повторяющихся вопросов. Трюк NFKD работает только как стриптизер с акцентом. Он не обрабатывает лигатуры и множество других латинских символов, которые не могут быть (или не разложены). Для этого необходима подготовленная таблица перевода (и намного быстрее).