从json文件中删除多余的空格

时间:2017-10-05 09:18:28

标签: python json

如何删除json文件中密钥的额外空间? 我的文件看起来像这样......

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

预期结果:

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

我可以将字符串的“strip”方法用于json文件(最好是带键的值)吗?

1 个答案:

答案 0 :(得分: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'}