我从班级创建了多个对象,并希望将每个对象写入CSV文件中的单独一行。
这是我的代码外观的一个示例。
p1 = Person("name1", "first", 2.5, 0.5, 3.6)
p2 = Person("name2", "second", 0.6, 5, 3)
p3 = Person("name3", "third", 1, 0.5, 3.4)
p4 = Person("name4", "fourth", 1.4, 0.3, 3.2)
所以我希望将一个人的所有信息存储在CSV文件中,如下所示:
name1 first 2.5 0.5 3.6
name2 second 0.6 5 3
等
我知道一般如何使用csv导入来编写csv,只是不使用这样的数据。
人员班级:
class Person:
def __init__(self, name, number, score1, score2, score3):
self.name = name
self.number = number
self.score1 = score1
self.score2 = score2
self.score3 = score3
答案 0 :(得分:1)
您可以使用dict
将实例的字段作为vars
:
>>> Person("name1", "first", 2.5, 0.5, 3.6)
{'name': 'name1', 'first_name': 'first', 'a': 2.5, 'b': 0.5, 'c': 3.6}
这允许使用csv.DictWriter
以可预测的方式写列:
import csv
with open('names.csv', 'w', newline='') as csvfile:
fieldnames = ['name', 'first_name', 'a', 'b', 'c'] # adjust this to your class' fields
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerow(vars(p1))
writer.writerow(vars(p2))
writer.writerow(vars(p3))
writer.writerow(vars(p4))