当前位置: 首页 > 面试题库 >

如何从JSON文件中的每个值中删除空格和换行符?

阴福
2023-03-14
问题内容

我有一个JSON具有以下结构的文件:

{
    "name":[
        {
            "someKey": "\n\n   some Value   "
        },
        {
            "someKey": "another value    "
        }
    ],
    "anotherName":[
        {
            "anArray": [
                {
                    "key": "    value\n\n",
                    "anotherKey": "  value"
                },
                {
                    "key": "    value\n",
                    "anotherKey": "value"
                }
            ]
        }
    ]
}

现在,我要为文件中的strip每个值关闭所有空白和换行符JSON。有什么方法可以遍历字典的每个元素以及嵌套的字典和列表吗?


问题答案:

现在,我要为JSON文件中的每个值剥离所有空白和换行符

使用pkgutil.simplegeneric()创建一个辅助函数get_items()

import json
import sys
from pkgutil import simplegeneric

@simplegeneric
def get_items(obj):
    while False: # no items, a scalar object
        yield None

@get_items.register(dict)
def _(obj):
    return obj.items() # json object. Edit: iteritems() was removed in Python 3

@get_items.register(list)
def _(obj):
    return enumerate(obj) # json array

def strip_whitespace(json_data):
    for key, value in get_items(json_data):
        if hasattr(value, 'strip'): # json string
            json_data[key] = value.strip()
        else:
            strip_whitespace(value) # recursive call


data = json.load(sys.stdin) # read json data from standard input
strip_whitespace(data)
json.dump(data, sys.stdout, indent=2)

注意:functools.singledispatch()函数(Python
3.4+)将允许使用collections
MutableMapping/MutableSequence代替dict/list此处。

输出量

{
  "anotherName": [
    {
      "anArray": [
        {
          "anotherKey": "value", 
          "key": "value"
        }, 
        {
          "anotherKey": "value", 
          "key": "value"
        }
      ]
    }
  ], 
  "name": [
    {
      "someKey": "some Value"
    }, 
    {
      "someKey": "another value"
    }
  ]
}


 类似资料:
  • 我使用XMLOutputter类将文档对象的内容写入xml文件。 但我面临以下问题:当我删除任何子节点时,它会在文档对象中创建空行,并且在将其内容保存到xml文件时,它也会在xml文件中显示空行。 所以这意味着如果我执行10次删除操作并保存其内容,那么xml文件中将有10行空行。 我浏览了以下链接。这些链接建议使用以下api: http://www.jdom.org/pipermail/jdom-

  • 问题内容: 如何以一种在Windows和Linux上都可以使用的方式替换Java字符串中的所有换行符(即,没有特定于操作系统的回车/换行/换行等问题)? 我试过了(注意readFileAsString是一个将文本文件读入String的函数): 但这似乎不起作用。 如何才能做到这一点? 问题答案: 你需要text将结果设置为: 这是必需的,因为字符串是不可变的-调用不会更改原始字符串,它会返回已更改

  • 问题内容: 我有以下数据,需要将它们全部放在一行中。 我有这个: 我需要这个: 这些命令均无法完美运行。 他们中的大多数让数据像这样: 问题答案: 编辑: 如果此处发布的所有命令均不起作用,则除了换行符以外,您还有其他用途。可能文件中有DOS / Windows行尾(尽管我希望Perl解决方案即使在这种情况下也可以工作)? 尝试: 如果这不起作用,那么您将不得不更仔细地检查文件(例如,在十六进制编

  • 问题内容: 简而言之; 我在XML文件中生成了许多空行,并且我正在寻找一种删除它们的方法,以作为倾斜文件的一种方法。我怎样才能做到这一点 ? 详细说明;我目前有这个XML文件: 我使用此Java代码删除所有标签,并添加新标签: 在多次执行此方法后,我得到了一个XML文件,其结果正确,但是在“ paths”标记之后和第一个“ path”标记之前有许多空行,如下所示: 有人知道该如何解决吗? ----

  • 简言之我在XML文件中生成了许多空行,我正在寻找一种方法来删除它们,作为学习文件的一种方式。我该怎么做? 详细说明;我当前有以下XML文件: 我使用此Java代码删除所有标记,并添加新标记: 多次执行此方法后,我得到了一个结果正确的XML文件,但在“paths”标记之后和第一个“path”标记之前有许多空行,如下所示: 有人知道怎么解决吗? ----------------------------

  • 问题内容: 我想知道如何删除: 所有 前导/尾随 空格或换行符,空字符等。 字符串中的任何多余空格(例如,“ hello [space] [space] world”将转换为“ hello [space] world”) 单个正则表达式,对国际空格字符的unicode支持等是否可行? 问题答案: 似乎您可能希望同时使用速记字符类和Unicode属性来匹配Unicode空间。但是,这两个步骤都不能用