Чтение CSV-файлов в списки Python

У меня много файлов .csv в каталоге, и я хотел бы открыть каждый из них в цикле внутри Python таким образом, чтобы первый .csv считывался в список [0], а второй .csv читается в список [1 ] и так далее.

К сожалению, хотя мой код проходит через все CSV-файлы, он помещает все CSV-файлы в список [0]. Как я могу изменить свой код, чтобы достичь своей цели выше? Большое спасибо.

Джон

Вот код:

def create_data_lists(): i=0 for symbol in symbols: with open(symbols[i]+'.csv', 'r') as f: print i reader = csv.reader(f) reader.next() for row in reader: rowdata.append(row) data_by_symbol.append(rowdata) i=i+1 

2 Solutions collect form web for “Чтение CSV-файлов в списки Python”

внутри цикла for, рядом с вершиной, вам нужно обновить список rowdata . в противном случае вы добавите его навсегда. есть что-то вроде rowdata = [] сразу после print i

 def create_data_lists(): for symbol in symbols: with open(symbol+'.csv', 'r') as f: print symbol rowdata = [] reader = csv.reader(f) reader.next() for row in reader: rowdata.append(row) data_by_symbol.append(rowdata) 

EDIT избавился от i , так как я действительно не использую его

почему бы не сохранить самих читателей в списке?

 list_of_csv_files = [] for f in filenames: list_of_csv_files.append(csv.DictReader(open(f))) 

Это сохранит читатель в списке, что позволит вам потом сделать что-то вроде:

 for row in list_of_csv_files[0]: # do some processing on the row 

Самое большое преимущество этого метода заключается в том, что вы можете легко делать такие вещи, как столбцы фильтров, используя такие методы, как:

 one_row = [row["name of column heading"] for row in list_of_csv_files[0]] two_rows = [[row["name col 2"], row["name col 2"]] for row in list_of_csv_files[0]] 

который, как я подозреваю, будет более полезен для вашей программы, чем хранение предварительно прочитанных (и, следовательно, деструктурированных) CSV-файлов.

но если вы действительно хотите, чтобы все CSV-файлы были прочитаны и сохранены в списке, вам понадобится список списков, я не рекомендую это, он будет очень интенсивным в памяти:

 list_of_csv_files = [[]] for f in filenames: list_of_csv_files.append([row.values() for row in csv.DictReader(open(f))]) 
  • Ошибка в python, csv и mysql: Ошибка: 1054 (42S22): Неизвестный столб 'nan' в 'списке полей'
  • конвертировать файл csv в список словарей
  • Пропустить строки во время импорта psas csv
  • Как читать CSV-файл из потока и обрабатывать каждую строку, когда она написана?
  • Экспорт проблем github в csv
  • Начать индекс в 1 при записи Pandas DataFrame в CSV
  • Pandas: как читать csv с несколькими строками в одной ячейке?
  • Запись списка списков Python в файл csv
  • Python - лучший язык программирования в мире.