2016-12-01 7 views
0

ich habe eine JSON-Datei mit Daten wie folgt aus:Wie liest man Daten aus der JSON-Datei?

{ 
    "id": 1008, 
    "description": "Cheese, caraway", 
    "tags": [ ], 
    "manufacturer": "", 
    "group": "Dairy and Egg Products", 
    "portions": [ 
     { 
      "amount": 1, 
      "unit": "oz", 
      "grams": 28.35 
     } 
    ], 
    "nutrients": [ 
     { 
      "value": 25.18, 
      "units": "g", 
      "description": "Protein", 
      "group": "Composition" 
     }, 
     { 
      "value": 29.2, 
      "units": "g", 
      "description": "Total lipid (fat)", 
      "group": "Composition" 
     }, 
     { 
      "value": 3.06, 
      "units": "g", 
      "description": "Carbohydrate, by difference", 
      "group": "Composition" 
     }, 
     { 
      "value": 3.28, 
      "units": "g", 
      "description": "Ash", 
      "group": "Other" 
     } 
    ] 
} 

und ich verwende die folgenden Codes, um zu versuchen aus, es zu lesen,

import json 
path = 'C:\\Users\\IBM_ADMIN\\Desktop\\ml-1m\\food_nutrients_database - 副本.json' 
data = open(path).read() 
records = json.loads(data) 

aber die folgende Fehlermeldung erhalten:

records = json.loads(data) 
ValueError: Expecting value: line 1 column 1 (char 0) 

Was ist das Problem hier? und ich bemerkte, dass das Ergebnis von "Daten" mit "'锘 縶" beginnt, ist dies der mögliche Grund? Wenn ja, wie löst man es?

+0

Klar Ihr JSON-Format ist falsch. –

Antwort

2

Tun Sie das nicht. Übergeben Sie einfach die Daten aus der Datei als Ganzes.

data = open(path).read() 
records = json.loads(data) 

Sie können mit load() es noch kürzer machen, die das Dateiobjekt nimmt selbst:

records = json.load(open(path)) 
1

Was Sie falsch macht, werden Sie jede Zeile von JSON-Datei zu lesen und es zu json vorbei .load(), alles, was Sie tun müssen, ist, Datei einmal zu öffnen, den Inhalt zu lesen und dann an die Methode json.load zu übergeben, die funktioniert.

file_data = open(path).read() 
json_data = json.loads(file_data) 

Also the posted JSON format is incorrect, so make sure your JSON format is correct.

+0

nachdem ich das JSON-Format neu formatiere, bekomme ich immer noch den gleichen Fehler, wenn ich versuche, Daten zu drucken (Daten = öffnen (Pfad) .read()), bemerkte ich die ersten paar Zeichen aus der ersten Zeile ungültige Zeichen ist dass der mögliche Grund? und wie löst man das? – tonyibm

0

Sie lesen die individuell Linien von Zeichenketten. Versuchen Sie stattdessen:

import json 

with open(path, 'r') as infile: 
    data = json.load(infile) 

json.loads ist eine Zeichenkette in ein JSON-Objekt zu laden, so sicher sein, nicht zu verwechseln mit json.load

+0

Danke, ich denke das Problem ist von den ungültigen Zeichen am Anfang der ersten Zeile, weiß nicht, wie man es entfernt, sie sind unsichtbar für mich, wenn ich die Datei im Editor überprüfen ++, – tonyibm

Verwandte Themen