Вы можете использовать функцию next()
для чтения одной строки из файла CSV. Таким образом, вам не нужно добавлять специальную логику внутри цикла for
для обработки первой строки. Если вы используете Python 3.x, вы должны открыть CSV с параметром newline=''
.
import csv
class SalesRecord():
def __init__(self, *args):
self.ProductID = args[0]
self.Date = args[1]
self.StoreNum = args[2]
self.Units = args[3]
self.PricePerUnit = args[4]
self.Total = args[5]
def __str__(self):
# Text to display if SalesRecord is printed
return "SalesRecord:\n ProductID {}\n Date {}\n StoreNum {}\n Units {}\n PricePerUnit {}\n Total {}".format(
self.ProductID, self.Date, self.StoreNum, self.Units, self.PricePerUnit, self.Total)
with open('input.csv', newline='') as salesfile:
salesreader = csv.reader(salesfile)
# Construct a SalesRecord using the CSV header elements
e1 = SalesRecord(*next(salesreader))
# Read the remaining rows into e2
e2 = []
for row in salesreader:
e2.append(row)
print(e1)
print(e2)
Итак, если у вас был файл input.csv
, который содержал, например:
col1,col2,col3,col4,col5,col6
1,2,3,4,5,6
a,b,c,d,e,f
Это выведет следующий вывод:
SalesRecord:
ProductID col1
Date col2
StoreNum col3
Units col4
PricePerUnit col5
Total col6
[['1', '2', '3', '4', '5', '6'], ['a', 'b', 'c', 'd', 'e', 'f']]
Примечание: функция __str__()
- это способ указать Python, что отображать, если ваш класс напечатан.