2017-10-05 56 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'}