@ghostku

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

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

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

Как правильно декодировать такую строку? Может можно что-то подкрутить в BeautifulSoup чтобы он изначально выдавал такие строки в читаемом виде?
Спасибо
  • Вопрос задан
  • 3209 просмотров
Пригласить эксперта
Ответы на вопрос 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 мкн
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект