再構成されたテキスト文字列のコード ディレクティブからソース コードを逐語的に抽出したいと思います。
以下はこれを行うための私の最初の試みですが、より良い (つまり、より堅牢な、より一般的な、またはより直接的な) 方法があるかどうかを知りたいです。
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');
}
'''
2 つのコード ブロックを取得するには、次のようにします。
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は、2 つのコード ブロックからの逐語的なソース コードのみを含むリストです。必要に応じて、 childのattributes属性を使用してコードの種類を調べることもできます。
それは仕事をしますが、より良い方法はありますか?