我的csv文件中的每一行都是宠物的数据。《鱼》,《尼莫》,4月2日,《金鱼》,《橘子》。我想导入该文件并根据其类型(每行中的第一个字符串)为该宠物创建一个新对象。例如,关于鱼的数据将存储在fish对象中。然后我想把每个对象放入一个列表中。
我试过:
pets = []
with open('desktop/cs110/pets.csv', 'r') as file:
csvReader = csv.reader(file, delimiter=',')
for row_pets in csvReader:
pets.append(row_pets)
columnNames = ['firstCol', 'secondCol', 'thirdColomn']
lstPets = []
for row_pets in pets:
lstPets.append({key: value for key, value in zip(columnNames, row_pets)})
return lstPets
使用csv.DictReader
,您可以通过指定fieldnames
并假设您的"对象"来完成当前代码的尝试。需要的是字典:
pets.csv
Fish,Nemo,April 2nd,Goldfish,Orange
Cat,Garfield,June 1st,Tabby,Orange
test.py
import csv
from pprint import pprint
with open('pets.csv', newline='') as file:
reader = csv.DictReader(file, fieldnames='type name bday species color'.split())
data = list(reader)
pprint(data)
[{'bday': 'April 2nd',
'color': 'Orange',
'name': 'Nemo',
'species': 'Goldfish',
'type': 'Fish'},
{'bday': 'June 1st',
'color': 'Orange',
'name': 'Garfield',
'species': 'Tabby',
'type': 'Cat'}]