2017-10-05 21 views
-1

jsonファイルのキー用に余分なスペースを削除するにはどうすればよいですか? 私のファイルはこのようになります...jsonファイルから余分な空白を削除します。

{ 
     " bankName " : " State bank of China " , 
" branchDetails " : [ 
     { 
... 

期待される結果:

{ 
     "bankName" : " State bank of China " , 
"branchDetails" : [ 
     { 
... 

私はJSONファイル(好ましい値と同様でキー)に文字列の「ストリップ」メソッドを使用することはできますか?

+0

私は、このタスクを実行するには、魔法の方法があるとは思いません。多分最も簡単な方法は、あなたのjsonコンテンツを読み込んでプレーンなPythonオブジェクトを取得し、次にdictキーをループしてstrip()を呼び出し、その結果をjsonにダンプ()します – Antwane

答えて

1

は、Pythonのデータ構造にあなたのJSONファイルを解析し、すべての文字列を削除し、再度それを書き出し:

from functools import singledispatch 

@singledispatch 
def json_strip(obj): 
    return obj 

@json_strip.register(str) 
def _(obj): 
    return obj.strip() 

@json_strip.register(list) 
def _(obj): 
    return [json_strip(v) for v in obj] 

@json_strip.register(dict) 
def _(obj): 
    return {json_strip(k): json_strip(v) for k, v in obj.items()} 

with open(inputfile, 'r') as inf: 
    with open(outputfile, 'w') as outf: 
     json.dump(json_strip(json.load(inf)), outf) 

これは、異なるタイプを処理するために再帰関数のシリーズを作成するために@functools.singledispatch() decoratorを使用しています。これにはPython 3.4以降が必要です。

separators, indent and sort_keys optionsを使用してjson.dump()の出力を調整することができます。

クイックデモ:

>>> json_strip({" bankName " : " State bank of China "}) 
{'bankName': 'State bank of China'} 
関連する問題