我有一个简单的代码,比如:
p = soup.find_all("p")
paragraphs = []
for x in p:
paragraphs.append(str(x))
我正在尝试转换一个从xml获得的列表并将其转换为字符串。我想保留它的原始标记,这样我可以重用一些文本,所以我要这样附加它的原因。但是,该列表包含6000多个观察结果,因此由于str:
“运行时错误:调用Python对象时超过了最大递归深度”
我听说你可以改变max递归,但这样做是不明智的。我的下一个想法是将字符串的转换分成500批,但我确信必须有更好的方法来实现这一点。有人有什么建议吗?
这里的问题可能是the document底部的一些二进制图形数据包含字符序列
<P
,Beautiful Soup正试图将其修复为实际的HTML标记。我还没有找到导致“超过递归深度”错误的文本,但它在某个地方。对我来说是p[6053]
,但是既然你似乎修改了文件一点(或者你使用了不同的解析器来处理漂亮的汤),我想对你来说会有所不同。假设您不需要文档底部的二进制数据来从实际的
<p>
标记中提取所需的任何内容,请尝试以下操作:我认为问题在于
BeautifulsSoup
对象p
不是生成的iteratiely,因此在您完成构造p = soup.find_all('p')
之前到达method call limit。注意RecursionError
在构建soup.prettify()
时同样抛出。对于我的解决方案,我使用了
re
模块来收集所有的<p>...</p>
标记(参见下面的代码)。我的最终结果是len(p) = 5571
。此计数低于您的计数,因为正则表达式条件与二进制图形数据中的任何文本都不匹配。相关问题 更多 >
编程相关推荐