Solicitudes de Python y Unicode

Estoy utilizando la biblioteca de solicitudes para consultar la API de Diffbot para obtener el contenido de un artículo de la URL de una página web. Cuando visito una URL de solicitud que creo en mi navegador, devuelve un objeto JSON con el texto en Unicode (¿correcto?) Por ejemplo (acorté un poco el texto):

{“icon”: “http://sofes.miximages.com/python/redirect=cnnmexico”, “text”: “CIUDAD DE MÉXICO (CNNMéxico) \ u2014 Kassandra Guazo Cano tiene 32 años, pero este domingo participó por primera vez en una elección. \ n \ “No había sacado mi (credencial del) IFE (Instituto Federal Electoral) porque al hacer el trámite hay mucha mofa cuando tu nombre no coincide con tus otros documentos de acuerdo con tu nueva identidad. \ Sin embargo, no hay discriminados, pero la experiencia de Kassanda es diferente: “hay que pagar una licencia, dos peritos (entre ellos un endocrinólogo). Además, el juez dicta la sentencia para el cambio de nombre y si no es favorable” Tengo que esperar otros cuatro años para volver a solicitar un registro civil “. \ nAnte esta situación, el Consejo para Prevenir y Eliminar la Esculina, el 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] / BODY [1] / SECTION [5] / DIV [1] / ARTICLE [1] / DIV [1] / DIV [6] “}

Cuando uso la biblioteca de solicitud de python de la siguiente manera:

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) 

Devuelve esto (nuevamente note que acorté un poco el texto):

{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 Kassandra Guazo Cano tiene 32 a \ xf1os, pero este domingo participó \ xf3 por primera vez en una elecci \ xf3n. \ n “No hab \ xeda sacado mi ( credencial del) IFE (Instituto Federal Electoral) porque al hacOyuky Mart \ xednez Col \ xedn, tambi \ xe9n trans \ xe9nero, y que estaba acompañado de sus dos hijos y su mam \ xe1. \ nAmbas como activistas en el Centro “¿Qué es lo siguiente?”, dice “¿Qué?”. Kassandra mientras sonríe, mantiene su credencial de elector y levanta su pulgar entintado. ‘, U’title’: u’Con apariencia de mujer e identidad masculina, los transgénero votan – M \ xe9xico: Voto 2012 – Nacional ‘, u’xpath ‘: u’ / HTML [1] / BODY [1] / SECTION [5] / DIV [1] / ARTICLE [1] / DIV [1] / DIV [6] ‘, u’icon’: u’http: // mexico. cnn.com/images/ico_mobile.jpg ‘}

No entiendo muy bien Unicode. ¿Cómo asegurarme de que lo que obtengo con las solicitudes sigue siendo Unicode?

Puede usar req.text lugar de req.content para asegurarse de obtener Unicode. Los métodos se describen en:

http://docs.python-requests.org/en/latest/api/#main-interface

Con respecto al “No entiendo bastante de Unicode”, hay una cartilla entretenida sobre Unicode de Joel Spolsky y el manual de Python Unicode que es una lectura de 10 minutos y cubre todo lo específico de Python.

Los documentos de solicitudes dicen que la solicitud siempre devolverá unicode, y el contenido de ejemplo que publicaste es de hecho unicode (¿te das cuenta de la syntax de la cadena u'' Esa es la syntax de Python para cadenas unicode), por lo que no hay problema. Tenga en cuenta que si ve la respuesta JSON en un navegador web, la u'' no estará allí porque es una propiedad de cómo Python almacena una cadena.

Si unicode es importante para su aplicación, no intente hacer frente sin realmente saber acerca de Unicode. Te encuentras en un mundo de dolor, los problemas con los conjuntos de caracteres son extremadamente frustrantes de depurar si no sabes lo que estás haciendo. Leer los dos artículos mencionados arriba puede tomar media hora.