Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 12, 2012 07:36:48

mrtwister
Зарегистрирован: 2012-08-12
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Опять уникод будь он не ладен! GAE + beautifulsoup

Драсти все! Не могу получить из парсера.
получаю из парсера текст таким образом:
link_topic.contents или link_topic.contents.string соответственно тип у получаемого значения ‘bs4.element.NavigableString’ а вот сделать из него unicode строку не выходит понятно, что contents.encode('utf-8') делает просто строку, а как мне получить просто unicode? парсер хранит и так в уникоде все но дотянуться не могу. Помогите пожайлуста

Офлайн

#2 Авг. 12, 2012 07:44:42

mrtwister
Зарегистрирован: 2012-08-12
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Опять уникод будь он не ладен! GAE + beautifulsoup

пока писал вопрос понял ответ используй unicode() идиот!

Офлайн

#3 Авг. 12, 2012 15:07:28

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Опять уникод будь он не ладен! GAE + beautifulsoup

content.decode()

Логика такая: дефолт - внутреннее представление питона (юникод). Из него кодируют и в него декодируют. Кодированное представление - это уже сериализованная байтовая строка в какой-то кодировке (cp1251, utf8, даже ucs-16), которую можно писать в файл/передавать по сети итд.

Отредактировано odnochlen (Авг. 12, 2012 15:08:20)

Офлайн

#4 Авг. 13, 2012 10:56:23

cpu
От:
Зарегистрирован: 2011-12-29
Сообщения: 58
Репутация: +  1  -
Профиль   Отправить e-mail  

Опять уникод будь он не ладен! GAE + beautifulsoup

mrtwister
пока писал вопрос понял ответ используй unicode() идиот!
не используй unicode() :

cpu@home-main:~$ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 'Привет, мир'
>>> unicode(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
unicode не жретъ кириллицу. Немецкие умляуты и прочие там диакритические символы, впрочем, тоже не жретъ. Используй силу .encode(), .decode(), Люк.



Офлайн

#5 Авг. 13, 2012 11:11:04

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Опять уникод будь он не ладен! GAE + beautifulsoup

cpu
mrtwister
пока писал вопрос понял ответ используй unicode() идиот!
не используй unicode()
unicode не жретъ кириллицу. Немецкие умляуты и прочие там диакритические символы, впрочем, тоже не жретъ. Используй силу .encode(), .decode(), Люк.
Угу, а еще два параметра у unicode видимо для красоты.
unicode([object[, encoding[, errors]]])



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version