Estoy tratando de cargar y analizar un archivo JSON en Python . Pero estoy atascado tratando de cargar el archivo:
import json
json_data = open('file')
data = json.load(json_data)
Rendimientos:
ValueError: Extra data: line 2 column 1 - line 225116 column 1 (char 232 - 160128774)
Miré 18.2. json
- Codificador y decodificador JSON en la documentación de Python, pero es bastante desalentador leer esta documentación de aspecto horrible.
Primeras líneas (anonimizadas con entradas aleatorias):
{"votes": {"funny": 2, "useful": 5, "cool": 1}, "user_id": "harveydennis", "name": "Jasmine Graham", "url": "http://example.org/user_details?userid=harveydennis", "average_stars": 3.5, "review_count": 12, "type": "user"}
{"votes": {"funny": 1, "useful": 2, "cool": 4}, "user_id": "njohnson", "name": "Zachary Ballard", "url": "https://www.example.com/user_details?userid=njohnson", "average_stars": 3.5, "review_count": 12, "type": "user"}
{"votes": {"funny": 1, "useful": 0, "cool": 4}, "user_id": "david06", "name": "Jonathan George", "url": "https://example.com/user_details?userid=david06", "average_stars": 3.5, "review_count": 12, "type": "user"}
{"votes": {"funny": 6, "useful": 5, "cool": 0}, "user_id": "santiagoerika", "name": "Amanda Taylor", "url": "https://www.example.com/user_details?userid=santiagoerika", "average_stars": 3.5, "review_count": 12, "type": "user"}
{"votes": {"funny": 1, "useful": 8, "cool": 2}, "user_id": "rodriguezdennis", "name": "Jennifer Roach", "url": "http://www.example.com/user_details?userid=rodriguezdennis", "average_stars": 3.5, "review_count": 12, "type": "user"}
data = json.loads(line); print data[u'votes']
para aquellos que se topan con esta pregunta: la
jsonlines
biblioteca de Python (mucho más joven que esta pregunta) maneja elegantemente archivos con un documento json por línea. ver https://jsonlines.readthedocs.io/fuente
Eso está mal formateado. Tiene un objeto JSON por línea, pero no están contenidos en una estructura de datos más grande (es decir, una matriz). Deberá reformatearlo para que comience
[
y termine con]
una coma al final de cada línea, o analizarlo línea por línea como diccionarios separados.fuente