2017-07-23 4 views
0

Ich lerne Dateiverwaltung von einer Website und habe versucht, ein bestimmtes Skript auszuführen, aber es hat nicht gut für mich gearbeitet.ValueError: Nicht genügend Werte zum Entpacken. Warum?

Es hält an der Linie diesen Fehler zurückgegeben: city, day, time = line.split()

ValueError: not enough values to unpack (expected at least 2, got 0)

ich eine Liste der Städte und ihre Zeitzonen alphabetize und Gurke Dump bin versucht, hat die Textdatei mehrere Zeilen wie diese:

Salt lake city Sun 09:52 
San Francisco Sun 00:52 
Amsterdam Sun 08:52 
Denver Sun 01:52 
San Salvador Sun 01:52 
Detroit Sun 02:52 

Dies ist der Code:

import pickle 

lines = open("cities_and_times.txt").readlines() 
lines.sort() 

cities = [] 
for line in lines: 
    *city, day, time = line.split() 
    hours, minutes = time.split(":") 
    cities.append((" ".join(city), day, (int(hours), int(minutes)))) 

    f_new = open("cities_and_times.pkl", "bw") 
    pickle.dump(cities, f_new) 

    print(cities) 
+2

Hinweis: Was passiert, wenn Sie eine Leerzeile haben? –

+0

Sie können Leerzeilen mit 'if not line: continue' überspringen. Übrigens, Sie haben ein Einrückungsproblem: das Zeug nach der 'cities.append' Zeile sollte nicht innerhalb der' for' Schleife liegen. –

+0

Eine leere Zeile, wie? Auf der Textdatei? Es gibt keine, aber es gibt Leerzeichen zwischen den Zeilen. – Danjoe

Antwort

0

Sie ein, wenn die Bedingung benötigen whic Mit h können Sie Leerzeilen überspringen. Etwas wie:

if not line: 
    continue 

# Or do this 

if not line: 
    pass 
else: 
    *city, day, time = line.split() 
+0

ausprobiert, das hat sich nichts geändert. – Danjoe

+0

Können Sie den Wert von "line" für die Iteration drucken, dass es den Fehler auslöst? – anon

+0

Es funktioniert jetzt. U hatte Recht, ich hatte am Ende der Datei Leerzeichen. – Danjoe

Verwandte Themen