2011-06-24 135 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