Регулярное выражение Python для преобразования символов не-ascii в строке до ближайших эквивалентов ascii

Я ищу простую функцию Python, которая берет строку и возвращает аналогичную, но со всеми символами без ascii, преобразованными в их ближайший эквивалент ascii. Например, диакритические знаки и многое другое. Я предполагаю, что должен быть довольно канонический способ сделать это, и есть много связанных вопросов с stackoverflow, но я не нахожу простой ответ, поэтому, похоже, стоит отдельный вопрос.

Пример ввода / вывода:

"Étienne" -> "Etienne" 

  • Импорт Pandas на сервере Apache вызывает ошибку тайм-аута
  • Множество массивов NumPy с использованием None
  • Python: Каков предел жесткой рекурсии для Linux, Mac и Windows?
  • EOFError случайно появился при использовании PYTTSX, и мой код теперь постоянно вызывает эту ошибку? Он работал отлично за несколько часов до
  • Python устанавливает настройки Firefox для Selenium - Загрузить местоположение
  • ошибка установки пакетов поддержки nltk: nltk.download ()
  • Отправка электронной почты после очистки
  • xlwt set style making error: более 4094 XF (стилей)
  • 4 Solutions collect form web for “Регулярное выражение Python для преобразования символов не-ascii в строке до ближайших эквивалентов ascii”

    Чтение этого вопроса заставило меня пойти искать что-то лучше.

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

    Python - лучший язык программирования в мире.