【发布时间】:2014-01-24 22:54:34
【问题描述】:
我有一个简单的代码,例如:
p = soup.find_all("p")
paragraphs = []
for x in p:
paragraphs.append(str(x))
我正在尝试转换从 xml 获得的列表并将其转换为字符串。我想保留它的原始标签,这样我就可以重用一些文本,这就是我这样附加它的原因。但是该列表包含超过 6000 个观察值,因此由于 str:
而发生递归错误“RuntimeError: 调用 Python 对象时超出最大递归深度”
我读到您可以更改最大递归,但这样做并不明智。我的下一个想法是将转换为字符串分成 500 个批次,但我确信必须有更好的方法来做到这一点。有人有什么建议吗?
【问题讨论】:
-
您能否将示例 xml 文件发布到 pastebin 或其他内容(如有必要,删除敏感数据)?我无法理解为什么只在
<p>元素上调用str会导致递归深度错误,除非您将标签嵌套到接近 500 的深度。 -
我使用的是公共数据。该文件可以在这里找到sec.gov/Archives/edgar/data/1547063/000119312513465948/…。正如我在描述中提到的那样,p 中有超过 6000 个段落标签
-
导致问题的原因是文档底部的二进制图形块,其中一些包含序列
<P,我认为BeautifulSoup 正试图将其修复为实际的XML 标记。你需要图形块吗? -
@senshin:不,beautifulsoup 效果很好。问题在于将每个单独的标签转换为字符串,从而给了我一个 runtimeErorr
-
好的,如果你认为这是问题所在,试试这个:在你的 for 循环中添加一个计数器,在每次迭代时,将计数器加一并打印出计数器的值。告诉我
RuntimeError发生时计数器的值是多少。
标签: python beautifulsoup runtime-error