<p>我想从recostructedText字符串中的代码指令中逐字提取源代码。在</p>
<p>下面是我第一次尝试这样做,但我想知道是否有更好的(即更健壮、更一般、更直接)的方法。在</p>
<p>假设我在python中将以下rst文本作为字符串:</p>
<pre><code>s = '''
My title
========
Use this to square a number.
.. code:: python
def square(x):
return x**2
and here is some javascript too.
.. code:: javascript
foo = function() {
console.log('foo');
}
'''
</code></pre>
<p>为了得到这两个代码块,我可以这么做</p>
^{pr2}$
<p>现在<em>源代码</em>是一个列表,其中只有来自两个代码块的逐字源代码。如果需要,我也可以使用<em>child</em>的<em>attributes</em>属性来找出代码类型。在</p>
<p>它能起作用,但是有更好的方法吗?在</p>
<p>可以进一步简化如下:</p>
<pre><code>source_code = [block.astext() for block in doctree.traverse(nodes.literal_block)
if 'code' in block.attributes['classes']]
</code></pre>