Making objects from a CSV file Python

37,870

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:]})
Share:
37,870

Related videos on Youtube

ChuckDavis
Author by

ChuckDavis

Updated on July 09, 2022

Comments

  • ChuckDavis
    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
      jonrsharpe almost 10 years
      You should bear this in mind.
    • ajdigregorio
      ajdigregorio almost 10 years
      this might be of interest to you, if you haven't already seen it
    • cmd
      cmd almost 10 years
      just make a list of myClass objects as you read in the file
    • Roland Smith
      Roland Smith almost 10 years
      There is no need to make name, age and hobbies class variables. Just initializing them as instance variables in __init__() is enough.
    • user2963623
      user2963623 almost 10 years
      You need to read this.
  • ChuckDavis
    ChuckDavis almost 10 years
    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
  • ChuckDavis
    ChuckDavis almost 10 years
    this is exactly what I was looking for. Thank you.
  • ncfx1099
    ncfx1099 over 3 years
    Because you might need to merge data, or validate a data model.