Je tente de construire deux listes simples à partir d'un objet CSV dans Python 2.6. Dans tous mes tests, la deuxième liste générée retourne toujours vide (la première liste générée renvoie très bien). C'est presque comme si la deuxième liste commençait avant que la première soit terminée. La seule façon d'exécuter ce code comme prévu est de copier les données CSV dans sa propre liste, puis d'itérer la copie - ce qui est correct, mais semble inefficace.Comportement de compréhension de liste avec un objet CSV
Je suis perplexe.
Le code suspect:
import csv
data_source = '/charts.csv'
final_data = []
x_obs1 = []
y_obs1 = []
x_obs2 = []
y_obs2 = []
data_file = open(data_source, "r")
final_data = csv.reader(data_file, delimiter=',')
[(x_obs1.append(item[0]), y_obs1.append(item[1])) for item in final_data]
[(x_obs2.append(item[0]), y_obs2.append(item[2])) for item in final_data]
data_file.close()
print y_obs2
Retours: []
Cela fonctionne comme prévu:
import csv
data_source = '/charts.csv'
final_data = []
x_obs1 = []
y_obs1 = []
x_obs2 = []
y_obs2 = []
data_file = open(data_source, "r")
csv_data = csv.reader(data_file, delimiter=',')
[final_data.append(item) for item in csv_data]
data_file.close()
[(x_obs1.append(item[0]), y_obs1.append(item[1])) for item in final_data]
[(x_obs2.append(item[0]), y_obs2.append(item[2])) for item in final_data]
print y_obs2
Retours: ['Barometric Pressure Normal', '30', '30', '30', '30', '30'....
Qu'est-ce que je manque? Toute idée serait la plus appréciée.
Belle. Je n'avais aucune idée que l'objet csv.reader était bon pour un aller et serait épuisé. Où étais-tu hier? Merci beaucoup! – DaveL17
Vous êtes les bienvenus! J'ai passé de nombreuses heures à me gratter la tête à des problèmes similaires, donc vraiment heureux d'aider;) – srowland