2017-07-23 2 views
0

J'apprends la gestion de fichiers à partir d'un site Web et j'ai essayé d'exécuter un certain script, mais cela n'a pas bien fonctionné pour moi.ValueError: pas assez de valeurs à décompresser. Pourquoi?

Il revient sans cesse cette erreur à la ligne: city, day, time = line.split()

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

Je suis en train de alphabétiser et cornichon vider une liste des villes et leurs fuseaux horaires, le fichier texte comporte plusieurs lignes comme celle-ci:

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 

Voici le 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

Indice: Que se passe-t-il lorsque vous avez une ligne vide? –

+0

Vous pouvez ignorer les lignes vides avec 'sinon ligne: continue'. BTW, vous avez un problème d'indentation: le truc après la ligne 'cities.append' ne devrait pas être dans la boucle' for'. –

+0

Une ligne vide, comment? Sur le fichier texte? Il n'y en a pas, mais il y a des espaces vides entre les lignes. – Danjoe

Répondre

0

Vous avez besoin d'un si la condition WHIC h vous permettra de sauter des lignes vides. Quelque chose comme:

if not line: 
    continue 

# Or do this 

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

essayé, rien n'a changé. – Danjoe

+0

Pouvez-vous imprimer la valeur de 'line' pour l'itération qu'il soulève l'erreur? – anon

+0

Cela fonctionne maintenant. J'avais raison, j'avais des blancs à la fin du fichier. – Danjoe