Making objects from a CSV file Python
Solution 1
Just create an empty list and add the objects to it:
import csv
my_list = []
with open('file.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
my_list.append(myClass(row[0], row[1], row[2:]))
Solution 2
Why not just use a dictionary?
import csv
persons = []
with open('file.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
persons.append({'name': row[0], 'age': int(row[1]),
'hobbies': row[2:]})
Related videos on Youtube
ChuckDavis
Updated on July 09, 2022Comments
-
ChuckDavis almost 2 years
I'm attempting to create a collection of objects in Python who's properties come from a CSV file.
Currently, I have a simple class:
class myClass: name = "" age = 0 hobbies = [] def __init__(self, var1, var2, var3) self.name = var1 self.age = var2 self.hobbies = var3
In an effort to store a lot of data without cluttering the code, I've created a CSV file like so:
Robert Samson,50,swimming,biking,running Sam Robertson,70,reading,singing,swimming
and so on. I should have about 50 of these, and they may change, which is my reasoning for using CSV.
Is there a way to systematically make myClass objects from this CSV file? I've read you shouldn't try and make objects with unique names in a loop but I'm not sure why.
Thanks
EDIT: I'm not looking for a way to store the csv data in python, I need to create objects... my example code is a little misleading in that myClass has functions that I'd like to be able to call
-
jonrsharpe almost 10 yearsYou should bear this in mind.
-
ajdigregorio almost 10 yearsthis might be of interest to you, if you haven't already seen it
-
cmd almost 10 yearsjust make a
list
ofmyClass
objects as you read in the file -
Roland Smith almost 10 yearsThere is no need to make
name
,age
andhobbies
class variables. Just initializing them as instance variables in__init__()
is enough. -
user2963623 almost 10 yearsYou need to read this.
-
-
ChuckDavis almost 10 yearsI'm not looking for a way to store the csv data in python, I need to create objects... my example code is a little misleading in that myClass has functions that I'd like to be able to call
-
ChuckDavis almost 10 yearsthis is exactly what I was looking for. Thank you.
-
ncfx1099 over 3 yearsBecause you might need to merge data, or validate a data model.