我想从重构文本字符串中的代码指令中逐字提取源代码。
接下来是我第一次尝试这样做,但我想知道是否有更好的(即更强大,或更通用,或更直接)的方式来做这件事。
假设我在 python 中有以下第一个文本作为字符串:
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');
}
'''
要获得这两个代码块,我可以这样做
from docutils.core import publish_doctree
doctree = publish_doctree(s)
source_code = [child.astext() for child in doctree.children
if 'code' in child.attributes['classes']]
现在source_code是一个列表,其中仅包含来自两个代码块的逐字源代码。如有必要,我也可以使用child的attributes属性来找出代码类型。
它可以完成工作,但是有更好的方法吗?