擅长:python、mysql、java
<p>您的解决方案只会在文档的顶层找到代码块,如果类“code”用于其他元素,它可能会返回误报(不太可能,但可能)。我还要检查元素/节点的类型,在它的.tagname属性中指定。在</p>
<p>节点上有一个“遍历”方法(document/doctree只是一个特殊的节点),它对文档树进行完整的遍历。它将查看文档中的所有元素,并只返回与用户指定条件匹配的元素(返回布尔值的函数)。方法如下:</p>
<pre><code>def is_code_block(node):
return (node.tagname == 'literal_block'
and 'code' in node.attributes['classes'])
code_blocks = doctree.traverse(condition=is_code_block)
source_code = [block.astext() for block in code_blocks]
</code></pre>