Estou tentando carregar e analisar um arquivo JSON em Python . Mas estou preso tentando carregar o arquivo:
import json
json_data = open('file')
data = json.load(json_data)
Rendimentos:
ValueError: Extra data: line 2 column 1 - line 225116 column 1 (char 232 - 160128774)
Eu olhei para 18,2. json
- Codificador e decodificador JSON na documentação do Python, mas é muito desanimador ler esta documentação de aparência horrível.
Primeiras linhas (anonimizadas com entradas aleatórias):
{"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 aqueles que se deparam com esta questão: a
jsonlines
biblioteca python (muito mais jovem do que esta questão) lida elegantemente com arquivos com um documento json por linha. consulte https://jsonlines.readthedocs.io/fonte
Isso está mal formatado. Você tem um objeto JSON por linha, mas eles não estão contidos em uma estrutura de dados maior (ou seja, uma matriz). Você precisará reformatá-lo para que comece
[
e termine com]
uma vírgula no final de cada linha ou analisá-lo linha por linha como dicionários separados.fonte