2017-10-05 57 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

解析您的JSON文件轉換爲Python數據結構,去除所有的字符串,並再次將其寫出來:

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'}