2011-06-24 101 views
13

我目前正在测试一个web服务,它以字典的形式返回大量的JSON数据。这些字典的键和值都是unicode字符串,因此它们打印为如何使Python 2.x Unicode字符串不会打印为''串'?

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

打印到交互式解释器中的屏幕上时。

现在想象一下,这是一个3层深,40个元素的字典。所有这些字符都会使显示器杂乱无章,因此很难一眼就看出真实的数据究竟是什么。即使在使用印刷

有什么办法告诉解释器我不关心普通字符串和unicode字符串之间的区别吗?我不需要或不需要

我发现唯一可能帮助的是PYTHONIOENCODING环境变量。不幸的是,将其设置为'ascii'或'latin-1'并不会使这些消息不起作用。

我使用的是Python 2.6,我使用了常规的Python解释器或iPython。

+0

可能重复:http://stackoverflow.com/questions/761361/suppress-the-uprefix-indicating-unicode-in-python-strings –

+4

切换到Python 3.x. JK –

回答

15

,如果这是你想要的JSON,只是打印json

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

嗯,那可以工作。一旦我回到办公室,我会尝试一下。谢谢你的提示。 – CoreDumpError

+0

好吧,尝试一下后,它是完美的!这基本上是圣地亚哥的另一个答案,json.dumps()是“打印字典的函数”。 – CoreDumpError

0

为什么不创建自己的函数来打印字典? Python的默认格式适用于快速,简单的调试,但绝对不适用于3级深度,40个元素的字典。

+0

嗯,这可以工作,但它会比这个问题更努力,真的值得。我希望有一些像命令行切换到解释器的东西。我已经在使用pprint,它可以完成所有的格式化工作,使这些深层字典具有一定的可读性,我宁愿不重新发明轮子。 – CoreDumpError

+0

好吧,你可以包装你的字符串并覆盖他们的'repr'方法。 – slezica