繁体   English   中英

通过格式不正确的JSON文件python进行解析

[英]Parsing through a JSON File python that is not formatted correctly

给我一个数据集,我需要对其进行一些数据分析。 给我的每个数据集都在一个json文件中。 我遇到的问题是,我注意到每个json对象都没有用'分隔,所以我不能只是将简单的json转储到变量中。 而且我不能仅在每个对象之间添加',',因为每个文件有100多个json对象,并且大约有100个文件,因此这样做会花费很长时间。 所以我想知道如何解决这个问题。

由于您没有提供数据示例,因此可以扩展JSONDecoder添加类似以下的类:

import json

class ComplexEncoder(json.JSONDecoder):
    def decode(self, obj):
        obj = obj.replace(" ", ", ")
        print(obj)
        return json.JSONDecoder.decode(self, obj)

a = json.loads('{"a":1 "b":2}', cls=ComplexEncoder)
print(a)
# {'a': 1, 'b': 2}

基本上只是用逗号替换该空格,如果您在:和值之间有空格,请创建一个不替换该正则表达式的正则表达式。

我认为您指的是json.loads()而不是json.dumps

您可以尝试使用littletable ,它将导入包含连续,无界(甚至多行)JSON对象的文件。

import littletable as lt

data = """
{"a": 100, "b": 200, "c": 300}
{"a": 101, "b": 201, "c": 301}
{
    "a": 102, 
    "b": 202, 
    "c": 302

}
"""

json_table = lt.Table()
# for this post we import from the data using a Python string;
# in your program, just do json_table.json_import('data_file.json')
json_table.json_import(data)
for row in json_table:
    print(row.a, row.b, row.c)

打印:

100 200 300
101 201 301
102 202 302

导入后,您可以将其重新导出为CSV,也可以像正常的Python列表一样使用该表,并以任意方式对其进行序列化。

披露:我是littletable的作者

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM