2017-06-29 33 views
0

スペースを使用してJSON文字列をダンプする方法を知っています。タブのインデント(スペースではない)を使用したJSONのダンプ

json.dump(data, open('dev_integrated.json', 'w'), sort_keys=True, indent=4, separators=(',', ': ')) 

は、私は4つのスペースの代わりに1つのタブのインデントを指定する方法があったかどうかを知りたいと思った:これは私が現在、飾り立てるとJSON文字列をダンプするために使用しているコマンドです。私はどこでもドキュメントでこれを見ることができませんでした。

ありがとうございました。

+0

私はあなたがそれを行うことはできないと思いますが、あなたはあなたが 'ここsimplejson'を使用することができます別のコール –

+0

のタブに結果の文字列に4つのスペースを置き換えることができ、それは上のいくつかの素晴らしい機能を備えています'json'モジュールが提供するもののトップです。もう一つの選択肢は、[変更点](https://github.com/python/cpython/commit/b643ef8f8e92728c2a4afaaa860592e384c7178c)と[カスタムクラスの作成](http://ideone.com/A7injH)です。 –

+0

これは有効な質問です。私はどんなdownvotesの必要性が表示されません。私はPython 2のために十分に見渡して何も見つかりませんでした。 –

答えて

6

のpython 2.7の場合は、正規表現を使用して回避策があります:

import re 
dump = json.dumps(data, sort_keys=True, indent=4, separators=(',', ': ')) 
#Replaces spaces with tab 
new_data = re.sub('\n +', lambda match: '\n' + '\t' * (len(match.group().strip('\n'))/3), dump) 
json.dump(new_data, open('dev_integrated.json', 'w') 

これは、ドキュメントからのPython 3.2+のため

です:

インデントは非負整数の場合JSON配列要素とオブジェクトメンバーは、そのインデントレベルできれいに印刷されます。インデントレベルが0、負または ""の場合、改行のみが挿入されます。 None(デフォルト)は最もコンパクトな表現を選択します。正の整数インデントを使用すると、レベルごとに多くのスペースがインデントされます。インデントが文字列( "\ t"など)の場合、その文字列は各レベルのインデントに使用されます。

json.dump(jString, open('dev_integrated.json', 'w'), sort_keys=True, indent='\t', separators=(',', ': '))

+0

質問はPython 2.7でタグ付けされています。これはPython 3.2以降の特定の機能です。 –

+0

はい、Pythonの2つの方法を更新します – Stack

+0

申し訳ありませんが、ここでは 'jString'という名前は誤字であることに気付きました。あなたの投稿を編集しました。 ;) –

関連する問題