2017-01-12 3 views
0

Это глупый вопрос, я знаю.Добавить 'u' префикс в строку

Я делаю запрос, запрос возвращает что-то вроде этого

"\u003cdiv style=\u0027inline-block\u0027\u003e\u003cdiv class=\u0027fbox\u0027\u003e\u003cdiv\u003e\u003ca"

Теперь, если я print(r.text)r быть переменной выше строка хранится в), он выводит его как это представлен выше.

Однако если я print("\u003cdiv style=\u0027inline-block\u0027\u003e\u003cdiv class=\u0027fbox\u0027\u003e\u003cdiv\u003e\u003ca")

Он печатает "<div style='inline-block'><div class='fbox'><div><a».

Так что мне интересно, как я могу напечатать как второй версии.

Это может быть не понятно, так сумма это вверх:

Когда я печатаю необработанную строку с \u003 и т. д., она печатает с \u003 замененным символом юникода. Но если я pr int это ответ от запроса, он печатает без замены символа.

+0

Используете ли вы Python 2.x или Python 3.x? r.text выглядит так, как будто вы используете библиотеку запросов. Это правда? – guettli

+0

Python 3.4.3 и да, запрашивает модуль – Will

+0

Вы испортились с 'str' или' repr' на 'r.text'? Кроме того, кажется, что у вас есть проблема с кодировкой для исправления запросов (если это то, что вы используете). Я никогда не видел значения unicode, возвращаемые с сайта –

ответ

0

Кажется, что r.text хранится как необработанная строка. т.е.

r.text = r"\u003cdiv style=\u0027inline-block\u0027\u003e\u003cdiv class=\u0027fbox\u0027\u003e\u003cdiv\u003e\u003ca" 

Для того, чтобы превратить его в юникод, вам нужно codecs модуль:

import codecs 
print(codecs.decode(r.text, 'unicode_escape')) 
+0

Это почти наверняка JSON, и есть тонкие различия между тем, как Python и JSON используют '\ uhhhh' escapes. Это может иметь значение при декодировании. –