调用Python对象时超出了最大递归深度(递归到迭代)

2024-06-25 06:37:01 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑:想好了。我只是做了以下事情:

import sys

sys.setrecursionlimit(1500) #This increases the recursion limit, ultimately moving
#up the ceiling on the stack so it doesn't overflow.

更多信息请查看此帖子:What is the maximum recursion depth in Python, and how to increase it?

----------原题----------------

我正在抓取约会的网页。到现在为止,我成功地以我正在搜索的格式拉取日期关于芬德尔,但当我到达第33个链接时,我得到一个“调用Python对象时超出了最大递归深度”错误,它一直指向日期=关于芬德尔(regex,str(网页))对象。在

从我所读到的,我需要在代码中使用一个循环,这样我就可以摆脱递归,但是作为一个新手,我不确定如何更改处理RegEx和关于芬德尔从递归到迭代。提前感谢您的任何见解。在

^{pr2}$

Tags: the对象import编辑网页sysitthis
2条回答

继续我的评论,您可以创建许多不同的模式,并迭代其中的每一个模式,而不是使用一个模式使用大量不同的OR语句。类似这样的方法可能会奏效:

regex = "January|February|March|April|May|June|July|August|September|October|November|December|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Sept|Oct|Nov|Dec"
regex = ["((?:"+month+")[\.]*[,]*[ ](?:0?[1-9]|[12][0-9]|3[01])[,|\.][ ](?:(?:20|'|`)[1][1]))" for month in regex.split("|")]

matches = []
for pattern in regex:
    matches.append(re.findall(pattern, str(webpage))

这是一种更为迭代的方法,但速度非常慢。这是因为它会运行关于芬德尔对于每个月,键入每个单独的网页。如您所见,如果您有至少33个链接,如您在问题中所说,这将是24*33运行re.findall。另外,无论如何,我不是python专家,我甚至不完全确定这个解决方案是否能够完全解决您的问题。在

我不认为

regex.append("...")

做你认为应该做的事。在

在调用append方法之后,regex现在是一个包含正则表达式的单元素数组。下面的连接告诉我,您认为它应该是一个多元素数组。在

一旦你解决了这个问题,我怀疑你的代码会更好地工作。在

相关问题 更多 >