我有一个while循环,它将数据返回给函数。
while (count < int(pagecount)):
count = count + 1
request = requestGet("http://www.site.com/User.aspx?ID={0}&page={1}".format(self.userid, count))
regexdata = re.findall('REGEX" REGEX="(.*?)"', request)
return regexdata
我需要知道如何将每个值返回到while循环所在的函数。另外,更具体地说,我返回的数据实际上是在列表中。因此,可能以某种方式将新列表附加到旧列表将是更好的方法。无论哪种方式,我都迷失了,我需要帮助。
感谢。
答案 0 :(得分:3)
如果你想返回一堆东西,把它们放在一个列表中并返回:
results = []
while (count < int(pagecount)):
count = count + 1
request = requestGet("http://www.site.com/User.aspx?ID={0}&page={1}".format(self.userid, count))
regexdata = re.findall('REGEX" REGEX="(.*?)"', request)
results.append(regexdata)
return results
或者,可能适合yield
结果,将您的函数转换为生成器:
while (count < int(pagecount)):
count = count + 1
request = requestGet("http://www.site.com/User.aspx?ID={0}&page={1}".format(self.userid, count))
regexdata = re.findall('REGEX" REGEX="(.*?)"', request)
yield regexdata
这两个选项都允许您迭代返回值以获取元素,但生成器选项只允许您执行一次。 return
会立即停止该函数,因此一旦您的函数遇到return
,它就不会继续进行进一步的循环迭代。
答案 1 :(得分:2)
您可以使用Generator:
def getRegexData(self):
while (count < int(pagecount)):
count = count + 1
request = requestGet("http://www.site.com/User.aspx?ID={0}&page={1}".format(
self.userid, count))
yield re.findall('REGEX" REGEX="(.*?)"', request)