Python 3.5+codecsфункция
codecs.namereplace_errors()
обработчики ошибок
Обработчик ошибок 'namereplace': заменяет некодируемый символ его именем из Юникода в виде \N{...}. Работает только при кодировании.
Синтаксис
codecs.namereplace_errors(exception)
Самый читаемый для человека вариант: в логе видно не \u20ac, а \N{EURO SIGN}. Запись совпадает с синтаксисом строкового литерала Python, поэтому результат можно вставить в код. Плата — длина: каждый символ превращается в десятки байтов. Появился в 3.5; при декодировании, как и xmlcharrefreplace, даёт TypeError.
Примеры
print('5€'.encode('ascii', 'namereplace')) # → b'5\\N{EURO SIGN}'
print('5\N{EURO SIGN}') # → 5€
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности