Ich möchte ein Programm machen, das Offline-Kopien von mathematischen Fragen von Khan Academy macht. Ich habe eine riesige 21,6 MB große Textdatei, die Daten zu allen ihren Übungen enthält, aber ich habe keine Ahnung, wie ich anfangen soll, sie zu analysieren, geschweige denn, die Fragen daraus zu ziehen.Wie kann ich diesen Block von JSON-Daten auseinanderziehen?
Here ist eine Pastebin, die eine Probe der JSON-Daten enthält. Wenn Sie alles sehen wollen, können Sie es here finden. Warnung für lange Ladezeit.
Ich habe noch nie zuvor JSON verwendet, aber ich schrieb ein schnelles Python-Skript, um zu versuchen, einzelne "Unterblöcke" (oder gleichwertige, korrekte Begriffe) von Daten zu laden.
import sys
import json
exercises = open("exercises.txt", "r+b")
byte = 0
frontbracket = 0
backbracket = 0
while byte < 1000: #while byte < character we want to read up to
#keep at 1000 for testing purposes
char = exercises.read(1)
sys.stdout.write(char)
#Here we decide what to do based on what char we have
if str(char) == "{":
frontbracket = byte
while True:
char = exercises.read(1)
if str(char)=="}":
backbracket=byte
break
exercises.seek(frontbracket)
block = exercises.read(backbracket-frontbracket)
print "Block is " + str(backbracket-frontbracket) + " bytes long"
jsonblock = json.loads(block)
sys.stdout.write(block)
print jsonblock["translated_display_name"]
print "\nENDBLOCK\n"
byte = byte + 1
Sie sind nicht in Betracht verschachtelten Klammern unter ... können Sie einen Stapel verwenden Spur davon zu halten. – danielfranca
Sie können etwas wie [jsonlint] (http://jsonlint.com/) verwenden, um Teile des JSON zu kopieren oder einzufügen, um es zumindest lesbar zu machen. Ich denke, ich habe ein wiederholtes Muster gefunden, aber weißt du, nach welchen Daten du eigentlich suchst? Sobald Sie es in 'json' laden, können Sie es als verschachtelte Listen und Wörterbücher behandeln. – roganjosh
Dies scheint Ihr sich wiederholendes Muster zu sein: http://pastebin.com/4nSnLEFZ – roganjosh