将列表传递给函数 python

Passing a list to a function python

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: sequence item 0: expected string, NbastatsSpider found" @

sampString = "".join(exlist)

NbastatsSpider 是填充我创建的项目的 'playerurl' 字段的蜘蛛的名称。我不明白为什么会出现此错误,因为我传入了一个列表,将其转换为字符串,对字符串执行正则表达式函数,最后返回了一个列表。将列表 (item['playerurl']) 传递给函数时一定有错误。或者我对使用 'self.' 参数感到困惑。

应该是:

def playerurls(self, exlist):

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

我不确定您一开始为什么要使用 self。 None 这些函数引用了 self.

的任何实例变量