2017-07-20 1 views
0

Ich habe eine Datenbank im JSON-Format. everylines wie folgt aus:JSON-Fehler in Python: json.decoder.JSONDecodeError: Erwartungswert: Zeile 1 Spalte 1 (Char 0)

{"link": "https://imdb.com/xxxxx", "name": "Movie Name"} 

Und ich schrieb dies mit Python:

#!/bin/env python 
import json 
db = open('db2.json', 'r') 
movie_name = str(input('Enter your movie name: ')) 
movies = db.read().splitlines() 
for movie in movies: 
    if movie_name in movie: 
     found_movie = json.loads(movie) 
     print(found_movie["link"]) 

Wenn ich es laufen soll, ist dies der Fehler:

Enter your movie name: Angry 
Traceback (most recent call last): 
    File "./30nama.py", line 8, in <module> 
    found_movie = json.loads(movie) 
    File "/usr/lib64/python3.6/json/__init__.py", line 354, in loads 
    return _default_decoder.decode(s) 
    File "/usr/lib64/python3.6/json/decoder.py", line 339, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    File "/usr/lib64/python3.6/json/decoder.py", line 357, in raw_decode 
    raise JSONDecodeError("Expecting value", s, err.value) from None 
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 
+0

'Film 'scheint eine Zeichenfolge aus einer Datenbank zu sein, kein JSON. füge 'print (movie)' vor 'found_movie = json.loads (movie)' hinzu, um das zu überprüfen – Arount

+1

Könntest du deine Filmdatenbank einbinden, oder zumindest einen Bruchteil davon, weil ich denke, dass ein Teil deines Problems ein schlecht formatierter JSON ist. –

+0

[Bearbeiten] Sie Ihre Frage und zeigen Sie mindestens 3 Datensätze von Daten aus ''db2.json''. – stovfl

Antwort

0

Ich bin nicht sicher, warum Sie tun Ihre db.read().splitlines(), als ob Sie ein Dateiobjekt für eine .json-Datei haben, können Sie es direkt als Python-Wörterbuch lesen. Als Beispiel hier ein Update des Codes ist, sollten die funktionieren:

#!/bin/env python 
import json 

#This is good practice that allows you to open and close the file automatically. 
with open('db2.json', 'r') as db: 
    movies = json.load(db) 

movie_name = str(input('Enter your movie name: ')) 

#Here we are looping through the keys of the dictionary, note that your json 
# file needs to have a unique key for each entry. 
for movie in movies: 
    if movie_name == movie['name']: 
    found_movie = movie 
    print(found_movie['link']) 

Dieser Code unterliegt je nach dem Format der Datei .json haben Sie ändern, das müssen wir Ihnen voll helfen, diese Frage zu beantworten .

+0

Wieder dieser Fehler: –

Verwandte Themen