我正在尝试从csv文件中提取信息。文件中的每一行包含一个类中使用的自变量的多个值。我想获取这些值并将其提供给一个对象,但是它需要解析每一行并使用这些参数值创建一个新的对象。
我需要每个对象使用不同的名称,例如:obj1 obj2等。
这是无需迭代(仅一个对象)的操作方式。
with open("file.csv") as csvfile:
file = csv.DictReader(csvfile)
for line in file:
name = line["name"]
cost = line["cost"]
#one object manually entered
obj = Class(name,cost)
csvfile.close()
答案 0 :(得分:0)
您可以创建对象字典并通过字典中的相应键来获取这些对象。
obj_dict = {}
with open("file.csv") as csvfile:
file = csv.DictReader(csvfile)
for idx, line in enumarate(file):
name = line["name"]
cost = line["cost"]
#one object manually entered
obj = Class(name,cost)
obj_dict['obj{}'.format(idx+1)] = obj
csvfile.close()
obj_dict['obj1'] # returns first object of type Class
也: 您可以通过编程方式用名称创建变量的另一种方式,尽管不建议在代码中实例化变量(例如,您的IDE可能会显示错误,因为它会认为未定义变量),因此不推荐使用这种方式:
_g = globals()
with open("file.csv") as csvfile:
file = csv.DictReader(csvfile)
for idx, line in enumarate(file):
name = line["name"]
cost = line["cost"]
#one object manually entered
obj = Class(name,cost)
_g['obj{}'.format(idx+1)] = obj
csvfile.close()
答案 1 :(得分:0)
使用列表,它们的用途是
with open("file.csv") as csvfile:
reader = csv.DictReader(csvfile)
objects = [Class(row["name"], row["cost"]) for row in reader]
# you don't need to close the file when using `with`
print(objects[0])
print(objects[1])
# etc