将数据从 csv 读取到类对象列表中 - Python

Posted

技术标签:

【中文标题】将数据从 csv 读取到类对象列表中 - Python【英文标题】:Read data from csv into list of class objects - Python 【发布时间】:2018-12-04 01:46:49 【问题描述】:

我无法弄清楚这一点。基本上我有一个 .csv 文件,其中包含 7 名员工的姓名、员工 ID、部门编号和职位。我的目标是让def readFile(employees) 接受一个空列表(称为员工),打开文件进行阅读,然后将文件中的所有员工加载到员工对象(员工)列表中。我已经将我的课程构建为:

class Employee:
def __init__(self, fname, lname, eid, dept, title):
    self.__firstName = fname
    self.__lastName = lname
    self.__employeeID = int(eid)
    self.__department = int(dept)
    self.__title = title

我还有其他几个类方法,但基本上我不太明白如何将文件正确加载到对象列表中。

【问题讨论】:

【参考方案1】:

我能够弄清楚这一点。我打开文件,然后从中读取一行,剥离 \n 并拆分我的数据。我使用了一个 while 循环来继续阅读行,只要它不是空行,并将其附加到我的空列表中。我还必须拆分第一个索引项,因为它是同一个字符串中的名字和姓氏,我需要将它们分开。

def readFile(employees):
    with open("employees.csv", "r") as f:
        line = f.readline().strip().split(",")
        while line != ['']:
            line = line[0].split(" ") + line[1:]
            employees.append(Employee(line[0], line[1], line[2], line[3], line[4]))
            line = f.readline().strip().split(",")

它很可能可以写得更好,更 Pythonic,但它可以满足我的需要。

【讨论】:

【参考方案2】:

为什么不使用熊猫。因此,您定义了一个员工 pandas 对象,并使用它们的索引来选择每个员工,并使用每列的名称来选择特定的员工属性。

【讨论】:

以上是关于将数据从 csv 读取到类对象列表中 - Python的主要内容,如果未能解决你的问题,请参考以下文章

将列表写入 pandas 数据帧到 csv,从 csv 读取数据帧并再次转换为列表而无需字符串

从 S3 存储桶中读取大量 CSV 文件

Python 从 CSV 读取数据

如何从csv文件中读取包含逗号的列表作为列?

如何从 UITableView 获取行索引,其中数组列表由追加到类

从列表的字典中提取列表,然后附加到数据框