Мне дали набор данных, который мне нужен для анализа данных. Каждый набор данных, который мне дали, находится в файле json. Проблема, с которой я столкнулся, заключается в том, что я заметил, что каждый объект json не разделен символом ', поэтому я не могу просто сделать простой дамп json в переменную. И я не могу просто добавить ',' между каждым объектом, потому что каждый файл имеет более 100 объектов json и около 100 файлов, поэтому это займет много времени. Поэтому мне было интересно, что я мог сделать, чтобы решить эту проблему, которая у меня возникла.

0
MOHAMMED SALEH 24 Окт 2018 в 05:45

2 ответа

Лучший ответ

Вы можете попробовать использовать 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

0
PaulMcG 7 Янв 2019 в 04:25

Поскольку вы не предоставляете пример своих данных, вы можете расширить 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

0
Mauricio Cortazar 24 Окт 2018 в 03:25
52960380