2011-06-24 10 views
13

現在、大量のJSONデータを辞書形式で返すWebサービスをテストしています。これらの辞書のキーと値はすべてUnicode文字列なので、インタラクティブなインタプリタの画面に印刷するとPython 2.x Unicode文字列をu'string 'として印刷しないようにするには?

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

のように印刷されます。

今、これは3レベルの深い40要素の辞書であると想像してください。すべてuの文字が表示されていないため、実際のデータが実際に何であるかを一目で把握することは困難です。 pprintを使用している場合でも。

普通の文字列とユニコード文字列の違いについて私が気にしないことを通訳者に伝える方法はありますか?私はuを必要としません。

PYTHONIOENCODING環境変数だけが私が助けたかもしれないことがわかりました。残念ながら、それを 'ascii'または 'latin-1'に設定しても、uは去っていません。

私は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印刷:

>>> 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のデフォルトのフォーマットは、高速で簡単なデバッグのためにはOKですが、3レベルの深い40要素の辞書には絶対に不適格です。それはあなたがしたいJSONだ場合

+0

うーん、それはうまくいくかもしれないが、この問題が本当に価値があるよりももっと努力するだろう。私はインタプリタへのコマンドラインスイッチのようなものを望んでいました。私はすでにpprintを使用しています。これは、これらのディープ・ディクショナリをいくらか読みやすくするためにすべてのフォーマット作業を行います。 – CoreDumpError

+0

まあ、あなたの文字列をラップし、 'repr'メソッドをオーバーライドすることができます。 – slezica

関連する問題