29 lines
722 B
Python
29 lines
722 B
Python
# reader.py
|
|
|
|
import csv
|
|
|
|
def read_csv_as_dicts(filename, types):
|
|
'''
|
|
Read a CSV file into a list of dicts with column type conversion
|
|
'''
|
|
records = []
|
|
with open(filename) as f:
|
|
rows = csv.reader(f)
|
|
headers = next(rows)
|
|
for row in rows:
|
|
record = { name: func(val) for name, func, val in zip(headers, types, row) }
|
|
records.append(record)
|
|
return records
|
|
|
|
def read_csv_as_instances(filename, cls):
|
|
'''
|
|
Read a CSV file into a list of instances
|
|
'''
|
|
records = []
|
|
with open(filename) as f:
|
|
rows = csv.reader(f)
|
|
headers = next(rows)
|
|
for row in rows:
|
|
records.append(cls.from_row(row))
|
|
return records
|