Найти - Пользователи
Полная версия: python2, unicode, преобразование строк
Начало » Python для новичков » python2, unicode, преобразование строк
1
VadimR
Всем лучи света.
Возникла проблема преобразования строки в юникод. Тащу с сайта контент, получаю переменную вида:
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 юзать придется =\
Shaman
print eval("u'%s'" % '\u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435')
dimy44
зачем eval?
alexbadaloff
>>> s = u'\u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435'
>>> s
'Тестовое сообщение'
Shaman
dimy44
зачем eval?
на случай
>>> s[0]
'\\'
>>> s[1]
'u'
>>> s[2]
'0'
есть что-то лучше?
Shaman
VadimR, если получены unicode данные, тогда по мере необходимости нужно пользоваться методами encode/decode для преобразования их в строку/из строки.
VadimR
Дело в том что данные на странице отображаются как раз в виде:
\u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435

Отсюда и гемор
o7412369815963
Наверно, чуть ли не каждый месяц этот вопрос тут задается.
>>> 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')
Тестовое сообщение
А вообще, скорей всего вы неправильно получаете данные с сайта.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB