Загрузка и анализ файла 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, но это довольно обескураживает, чтобы прочитать эту ужасную документацию.
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