将列表传递给函数python

时间:2015-01-05 19:12:58

标签: python list function

def parsePlayer(self,item,response):    #this one works like it should

    item['playerurl'] = re.findall(r'"[^"]*"',"".join(item['playerurl'])) 
    print(item['playerurl'])


def parsePlayer(self,item,response):    #this one does not work like it should

    item['playerurl'] = self.playerurls(item['playerurl'])
    print(item['playerurl'])


def playerurls(*exlist):
    listed = []
    sampString = "".join(exlist)
    listed = re.findall(r'"[^"]*"',sampString)
    return listed

我正在尝试创建一个能够执行第一个parsePlayer函数的函数。我希望playerurls函数可以获取一个列表,然后执行一个正则表达式函数来提取引号中字符串的所有部分,这不是我遇到麻烦的地方。

我在编写playerurls函数时遇到了麻烦。我不断得到这个:“exceptions.TypeError:序列项0:期望的字符串,找到NbastatsSpider”@

sampString = "".join(exlist)

NbastatsSpider是填充我创建的项目的'playerurl'字段的蜘蛛的名称。我不明白为什么我收到这个错误,因为我传入一个列表,把它变成一个字符串,对字符串执行正则表达式函数,最后返回一个列表。将列表(item ['playerurl'])传递给函数时必定存在错误。无论是那个还是我都在迷惑自己使用'自我'。参数。

1 个答案:

答案 0 :(得分:2)

应该是:

def playerurls(self, exlist):

您需要self参数,因为您将其称为self.playerurls。在*参数之前,您不需要exlist:当列表的元素作为单独的参数传递时使用。

我不确定您为何首先使用self。这些函数都不是指self的任何实例变量。