Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 12, 2013 15:23:03

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

python2, unicode, преобразование строк

Всем лучи света.
Возникла проблема преобразования строки в юникод. Тащу с сайта контент, получаю переменную вида:

s = '\u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435' ('Тестовое сообщение')
>>> s
'\\u0422\\u0435\\u0441\\u0442\\u043e\\u0432\\u043e\\u0435 \\u0441\\u043e\\u043e\
\u0431\\u0449\\u0435\\u043d\\u0438\\u0435'
>>> s[0]
'\\'
>>> s[1]
'u'
>>> s[2]
'0'
Как можно преобразовать строку в юникод? Неужели replace юзать придется =\

Офлайн

#2 Июнь 12, 2013 16:02:42

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

python2, unicode, преобразование строк

print eval("u'%s'" % '\u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435')

Офлайн

#3 Июнь 12, 2013 16:04:36

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

python2, unicode, преобразование строк

зачем eval?

Офлайн

#4 Июнь 12, 2013 16:05:09

alexbadaloff
От: Иваново
Зарегистрирован: 2013-04-11
Сообщения: 198
Репутация: +  16  -
Профиль   Отправить e-mail  

python2, unicode, преобразование строк

>>> s = u'\u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435'
>>> s
'Тестовое сообщение'



————————–
Истина где-то рядом

Отредактировано alexbadaloff (Июнь 12, 2013 16:05:32)

Офлайн

#5 Июнь 12, 2013 16:12:37

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

python2, unicode, преобразование строк

dimy44
зачем eval?
на случай
>>> s[0]
'\\'
>>> s[1]
'u'
>>> s[2]
'0'
есть что-то лучше?

Офлайн

#6 Июнь 12, 2013 16:20:57

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

python2, unicode, преобразование строк

VadimR, если получены unicode данные, тогда по мере необходимости нужно пользоваться методами encode/decode для преобразования их в строку/из строки.

Отредактировано Shaman (Июнь 12, 2013 16:21:59)

Офлайн

#7 Июнь 12, 2013 16:33:06

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

python2, unicode, преобразование строк

Дело в том что данные на странице отображаются как раз в виде:
\u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435

Отсюда и гемор

Офлайн

#8 Июнь 16, 2013 12:41:05

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

python2, unicode, преобразование строк

Наверно, чуть ли не каждый месяц этот вопрос тут задается.

>>> s = '\u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435'
>>> s
'\\u0422\\u0435\\u0441\\u0442\\u043e\\u0432\\u043e\\u0435 \\u0441\\u043e\\u043e\\u0431\\u0449\\u0435\\u043d\\u0438\\u0435'
>>> print s.decode('unicode_escape')
Тестовое сообщение
А вообще, скорей всего вы неправильно получаете данные с сайта.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version