Загрузка и анализ файла JSON с несколькими объектами JSON в Python



Я пытаюсь загрузить и проанализировать файл JSON в Python. Но я застрял, пытаясь загрузить файл:



import json
json_data = open('file')
data = json.load(json_data)


выходы:



ValueError: Extra data: line 2 column 1 - line 225116 column 1 (char 232 - 160128774)


Я посмотрел на 18.2. json - JSON кодер и декодер в документации Python, но это довольно обескураживает, чтобы прочитать эту ужасную документацию.

535   3  

3 ответов:

у вас JSON Lines формат текстового файла. Вам нужно разобрать файл строка за строкой:

import json

data = []
with open('file') as f:
    for line in f:
        data.append(json.loads(line))

каждого строка содержит допустимый JSON, но в целом он не является допустимым значением JSON, поскольку нет списка верхнего уровня или определения объекта.

обратите внимание, что поскольку файл содержит JSON в строке, вы сохраняете головные боли, пытаясь разобрать все это за один раз или выяснить потоковый парсер JSON. Теперь вы можете выбрать для обработки каждой строки отдельно перед переходом к следующему, сохраняя память в процессе. Вы, вероятно, не хотите добавлять каждый результат в один список и затем

Это - это плохо отформатирован. У вас есть один объект JSON в строке, но они не содержатся в большей структуре данных (т. е. массиве). Вам либо нужно переформатировать его так, чтобы он начинался с [ и заканчивается ] с запятой в конце каждой строки, или разобрать его построчно как отдельные словари.

для тех, кто наткнулся на этот вопрос: питон jsonlines библиотека (гораздо моложе, чем этот вопрос) элегантно. обрабатывает файлы с одним документом json в строке. вижу https://jsonlines.readthedocs.io/

Comments

    Ничего не найдено.