@ghostku

Как декодировать unicode escaped строки?

При парсинге с помощью BeautifulSoup иногда получаю строки содержащие символы вида \uxxxx
Например:
element.text
>>> 'Плотность пленки \u2013 10 мкн'

Пытался декодировать:
element.text.decode('unicode_escape')
Получаю ошибку:
AttributeError: 'str' object has no attribute 'decode'

Как правильно декодировать такую строку? Может можно что-то подкрутить в BeautifulSoup чтобы он изначально выдавал такие строки в читаемом виде?
Спасибо
  • Вопрос задан
  • 3147 просмотров
Пригласить эксперта
Ответы на вопрос 2
atomheart
@atomheart
Пишу на Python за карму и за деньги
Во-первых, вы в консоли видите декодированную под кодировку консоли строку. Это не то же самое, как видит ее Python изнутри (а видит он ее скорее всего в unicode). Конкретно у вас судя по тексту закодирован какой-то символ (длинное тире, возможно), которого в консольной кодировке нет, поэтому он выводит его тип.
Во-вторых, попробуйте внутри своего приложения выполнить поиск по подстроке, чтобы проверить, что Python ее обрабатывает корректно (например, найти этот символ).
В-третьих, у вас ошибка что у типа str нет метода decode, поэтому попробуйте так:
str(element.text).decode('unicode_escape')
Ответ написан
Комментировать
delvin-fil
@delvin-fil
Crazy Linux-admin
element.encode().decode()
Плотность пленки – 10 мкн
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы