Я пытаюсь построить два простых списка из объекта CSV в Python 2.6. Во всех моих тестах, второй сгенерированный список всегда возвращается как пустой (первый сгенерированный список возвращает только штраф.) Почти так, как будто второе понимание списка начинается до того, как первый закончен. Единственный способ, которым я могу заставить этот код работать, как и ожидалось, - скопировать CSV-данные в свой собственный список, а затем перебрать копию - это нормально, но кажется неэффективным.Понимание списка с CSV-объектом
Я в тупике.
Подозреваемый код:
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
Возвращает: []
Это работает, как ожидалось:
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
Возвращает: ['Barometric Pressure Normal', '30', '30', '30', '30', '30'....
Что мне не хватает? Любое понимание было бы наиболее оценено.
Красивые. Я понятия не имел, что объект csv.reader хорош на один ход и будет исчерпан. Где ты был вчера? Огромное спасибо! – DaveL17
Добро пожаловать! Я провел много часов, царапая голову по подобным вопросам, поэтому очень рад помочь;) – srowland