为我提供了一个数据集,我需要对其进行一些数据分析。给我的每个数据集都在一个json文件中。我遇到的问题是,我注意到每个json对象都没有用'分隔,所以我不能只是将简单的json转储到变量中。而且我不能仅在每个对象之间添加',',因为每个文件有100多个json对象,并且大约有100个文件,因此这样做会花费很长时间。因此,我想知道如何解决这个问题。
答案 0 :(得分:0)
由于您没有提供数据示例,因此可以扩展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
答案 1 :(得分:0)
You could try using littletable, which will import files containing consecutive, undelimited (even multiline) JSON objects.
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)
Prints:
100 200 300
101 201 301
102 202 302
Once it is imported, you could re-export it as a CSV, or just use the table like a normal Python list and serialize it any way you like.
Disclosure: I am the author of littletable