2017-02-13 3 views
0

Ich versuche, eine JSON-Datei zu schneiden, damit es richtig funktioniert: JSON fileWie schneidet man eine JSON-Datei?

Problem ist die JSON-Datei mit var Nations = beginnt.

var Nations = {"Nations":[{"Name":"Neutral","CanBeUsedAsBotFiller":false,.... 

Also versuche ich es loszuwerden, indem es aus dem Schneiden und wieder zu speichern:

import urllib.request 

urlData = 'http://storage.googleapis.com/nacleanopenworldprodshards/Nations_cleanopenworldprodeu1.json' 
webURL = urllib.request.urlopen(urlData) 
data = webURL.read() 
sliced_data = data[14:][:-1] 

f = open(r'file.json', 'w') 
f.write(str(sliced_data)) 
f.close() 

Aber die gespeicherte Datei zeigt eine b'

b'{"Nations":[{"..... 

Wie ich tun richtig loswerden und habe eine JSON-Datei, die ich in Python verwenden kann?

+0

ich denke, man könnte die 'var Nations =' mit sliced_data.replace entfernen (‚var Nations =‘, ‚‘) 'und dann können Sie verwenden die "loads" -Funktion aus dem 'json'-Modul, um es in python zu konvertieren – Nullman

Antwort

2

Die Daten werden aus dem Internet heruntergeladen, daher sind es Bytes. Also müssen Sie die Datei als Binärdatei öffnen.

Beachten Sie auch, dass Sie mit einem Kontexthandler die Dinge verkürzen können; und Sie können in einem Rutsch beide Teile der Scheibe tun:

sliced_data = data[14:-1] 

with f as open(r'file.json', 'wb') 
    f.write(str(sliced_data)) 
0

Wenn Sie als utf-8 decodieren, wird die Byte-Zeichenfolge in Zeichenfolge konvertiert.

f.write(sliced_data.decode('utf-8'))