私は辞書を出力するのにprettyprintを使いたいが、文字列にはコンソールにしない。 この文字列は他の関数に渡されます。PrettyPrint Pythonを文字列に変換し、標準出力ではない
私はsys.outの代わりにファイルを指定するのに "stream"パラメータを使うことができますが、文字列が必要だと知っています。
どうすればよいですか?
私は辞書を出力するのにprettyprintを使いたいが、文字列にはコンソールにしない。 この文字列は他の関数に渡されます。PrettyPrint Pythonを文字列に変換し、標準出力ではない
私はsys.outの代わりにファイルを指定するのに "stream"パラメータを使うことができますが、文字列が必要だと知っています。
どうすればよいですか?
だけStringIO
moduleを使用します。
import StringIO
output = StringIO.StringIO()
今、あなたはprettyprint
へのストリームとしてoutput
を渡すことができます。
ユニコード変換に注意してください! –
あなたは、単にPPRINTモジュールからpformat関数を呼び出す必要があります。
import pprint
s = pprint.pformat(aDict)
「StringIO」経由よりもはるかにpythonic、IMHO – thias
私は同意します。私は 'pprint'のこのオプションについて知らなかった。 –
これは正しい答えとして設定する必要があります。これは、要求がpprintの文字列であるため、pformatは** thisの**メソッドです。 pprintモジュールによってこの目的のために提供されています。 – Techdragon
私は時々そのためjson
モジュールを使用します。
In [1]: import json
In [2]: d = {'a':1, 'b':2, 'c':{'a':1}}
In [3]: s = json.dumps(d, indent=4)
In [4]: s
Out[4]: '{\n "a": 1, \n "c": {\n "a": 1\n }, \n "b": 2\n}'
In [5]: print s
{
"a": 1,
"c": {
"a": 1
},
"b": 2
}
'S = pprint.pformat(your_dict)' – thias
を@ thiasは改行を含みません。 – Fabian
@Fabianはいそうです。 widthパラメータを指定するだけです。 – Simon