从String创建类实例,并放入List

时间:2017-11-23 00:29:00

标签: python python-2.7 for-loop

所以我正在从CSV中读取行,并尝试从这些项创建类实例。我在从CSV获取正确数量的参数/格式化我的str时遇到问题,因此它将它们识别为单独的对象。它说我只给了2个参数(self和其中一行) 我尝试使用split()和strip(),但无法使其工作。 任何帮助,将不胜感激。这让我花了太长时间才弄明白。

以下是行的外观示例。

当前输入

whiskers,pugsley,Raja,Panders,Smokey
kitty,woofs,Tigger,Yin,Baluga

当前代码:

import sys

class Animals:
    def__init__(self,cats,dogs,tiger,panda,bear)
        self.cats=cats
        self.dogs = dogs
        self.tiger = tiger
        self.panda = panda
        self.bear = bear

csv = open(file, 'r')
rowList = csv.readlines()
for row in rowList:
    animalList = Animals(row.split(','))  # Fails here...
    animals = []
    animals = animals.append(animalsList)  # Want to add to list
    print animals

1 个答案:

答案 0 :(得分:1)

您似乎有一些语法错误,我继续并纠正了这些错误。接下来,我决定使用csv来正确分割行。然后,当您向函数输入列表(并希望将它们作为参数进行解析)时,您应该使用*运算符。

import sys, csv

file = "file.txt" #added for testing purposes.

class Animals:
    def __init__(self,cats,dogs,tiger,panda,bear):
        self.cats = cats
        self.dogs = dogs
        self.tiger = tiger
        self.panda = panda
        self.bear = bear

csv = csv.reader(open(file, 'r'))
animalsList = []
for row in csv:
    animalClass = Animals(*row)  # Fails here...
    animalsList.append(animalClass)  # Want to add to list