Запросы Python и Unicode

Я использую библиотеку запросов для запроса API Diffbot для получения содержимого статьи из URL-адреса веб-страницы. Когда я нахожу URL-адрес запроса, который я создаю в своем браузере, он возвращает объект JSON с текстом в Юникоде (справа?), Например (я немного сократил текст):

{ "значок": "http://mexico.cnn.com/images/ico_mobile.jpg", "Текст": "СЬЮДАД DE MÉXICO (CNNMéxico)\u2014 Кассандра Гуазо Кано тиен 32 años, pero este domingo участие в primera vez en una elección.\n\" Нет había sacado mi (credencial del) IFE (Instituto Federal Electoral) porque al hacer el trámite hay mucha mofa cuando ven que tu nombre не совпадает con tu y otros documentos de acuerdo con su nueva identidad.\nSánchez кубики лососа не согласны с дискриминацией сына, Kassanda es diferente:\ "hay que pagar un licenciado, dos peritos (entre ellos un endocrinólogo). Además, el juez dicta sentencia para el cambio de nombre y si no es благоприятные tienes que esperar otros cuatro años para volver a demandar al registro civil\". \nAnte esta месторасположение, эль Consejo para Prevenir y Eliminar la sculina, los transgénero votan - México: Voto 2012 - Nacional "," URL ":" http://mexico.cnn.com/nacional/2012/07/02/con-apariencia-de-mujer-e-identidad-masculina-los-transexuales-votan "," XPath ":" /html [1]/ТЕЛА [1]/РАЗДЕЛ [5]/DIV [1]/Статья [1]/DIV [1]/DIV [6]"}

Когда я использую библиотеку запросов python следующим образом:

def get_article(self, params={}):
  api_endpoint = 'http://www.diffbot.com/api/article'
  params.update({
    'token': self.dev_token,
    'format': self.output_format,
  })
  req = requests.get(api_endpoint, params=params)
  return json.loads(req.content)

Он возвращает это (еще раз обратите внимание, что я немного сократил текст):

{u'url ': u'http://mexico.cnn.com/nacional/2012/07/02/con-apariencia-de-mujer-e-identidad-masculina-los-transexuales-votan ", u'text ': u'CIUDAD DE M\xc9XICO (CNNM\xe9xico)\u2014 Кассандра Гуазо Cano tiene 32 a\xf1os, pero este domingo участие \xf3 por primera vez en una elecci\xf3n.\n" Нет hab\xeda sacado mi (credencial del) IFE (Instituto Federal Electoral) porque al hacOyuky Mart\xednez Col\xedn, tambi\xe9n transg\xe9nero, y que Estaba acompa\xf1ada de sus dos hijos y su mam\xe1.\nAmbas trabajan como activistas en el Centro de Apoyo a las Identidades Trans, A.C., donde attendan en una campa\xf1a de prevenci\xf3n de enfermedades sexuales.\n "Quisi\xe9ramos que no solo nos vean como trabajadoras sexuales o estilistas, sino que luchamos por nuestros derechos", кости Kassandra mientras sonr\xede, sostiene su credencial de elector y levanta su pulgar entintado. ', u'title': u'Con apariencia de mujer e identidad masculina, los transg\xe9nero votan - M\xe9xico: Voto 2012 - Nacional ', u'xpath': и '/html [1]/ТЕЛА [1]/РАЗДЕЛ [5]/DIV [1]/Статья [1]/DIV [1]/DIV [6]', u'icon ': u'http://mexico.cnn.com/images/ico_mobile.jpg'}

Я не совсем понимаю Unicode. Как убедиться, что все, что я получаю с запросами, все еще Unicode?

Ответы

Ответ 2

Относительно "я не совсем понимаю unicode", есть развлекательный учебник на Unicode Джоэл Спольский и официальный Python Unicode HowTo, который читается в течение 10 минут и охватывает все специфичные для Python.

docs docs говорят, что запрос всегда будет возвращать unicode, а приведенный вами контент на самом деле является unicode (обратите внимание на синтаксис строки u''? Этот синтаксис Python для строк unicode.), поэтому проблем нет. Обратите внимание, что если вы просматриваете ответ JSON в веб-браузере, u'' не будет там, потому что это свойство того, как Python хранит строку.

Если unicode очень важен для вашего приложения, пожалуйста, не пытайтесь справиться, не зная о юникоде. Вы находитесь в мире боли, проблемы с набором символов крайне расстраивают отладки, если вы не знаете, что делаете. Чтение обеих статей, упомянутых выше, может занять полчаса.