2011-06-24 9 views
13

Actualmente estoy probando un servicio web que devuelve grandes cantidades de datos JSON en forma de diccionarios. Las claves y los valores para los diccionarios son todas las cadenas Unicode, y por lo tanto se imprimen comoCómo hacer que las cadenas Unicode de Python 2.x no se impriman como u'string '?

{u'key1':u'value', u'key2':u'value2'} 

cuando se imprime a la pantalla en el intérprete interactivo.

Ahora imagine que este es un diccionario de 3 niveles y 40 elementos. Todos esos caracteres u abarrotan la pantalla, por lo que es difícil adivinar, de un vistazo, cuáles son realmente los datos reales. Incluso cuando se usa pprint.

¿Hay alguna manera de decirle al intérprete que no me importa la diferencia entre las cadenas normales y las cadenas Unicode? No necesito ni deseo el u.

Lo único que he encontrado que podría haber ayudado fue la variable de entorno PYTHONIOENCODING. Desafortunadamente, establecerlo en 'ascii' o 'latin-1' no hace que esos u desaparezcan.

Estoy usando Python 2.6 y uso el intérprete regular de python o iPython.

+0

Posible duplicado: http://stackoverflow.com/questions/761361/suppress-the-uprefix-indicating-unicode-in-python-strings –

+4

Cambiar a Python 3.x. JK –

Respuesta

15

si es JSON que desea, simplemente imprimir json:

>>> import json 
>>> print json.dumps({u'key1':u'value', u'key2':u'value2'}, indent=4) 
{ 
    "key2": "value2", 
    "key1": "value" 
} 
+0

Hmmm, eso podría funcionar. Una vez que regrese a la oficina lo intentaré. Gracias por el consejo. – CoreDumpError

+0

Ok, después de probar esto, ¡es perfecto! Básicamente es la idea de Santiago de la otra respuesta, con json.dumps() como la "función para imprimir el diccionario". – CoreDumpError

0

¿Por qué no crea su propia función para imprimir el diccionario? El formato predeterminado de Python está bien para una depuración fácil y rápida, pero absolutamente inapropiado para un diccionario de 3 niveles y 40 elementos.

+0

Hmm, eso podría funcionar, pero sería más esfuerzo que este problema realmente valga la pena. Esperaba algo así como un cambio de línea de comando para el intérprete. Ya estoy usando pprint, que hace todo el trabajo de formateo para hacer que estos profundos diccionarios sean algo legibles, y prefiero no reinventar la rueda. – CoreDumpError

+0

bien, podría envolver sus cadenas y anular su método 'repr'. – slezica

Cuestiones relacionadas