[英]How to parse restructuredtext in python?
是否有任何模塊可以將重構文本解析為樹模型?
docutils或sphinx可以這樣做嗎?
Docutils確實包含了執行此操作的工具。
你可能想要的是docutils.parsers.rst
的解析器
有關所涉及的詳細信息,請參閱此頁面 。 在docutils/examples.py
中也有一些例子 - 特別是檢查internals()
函數,這可能是有意義的。
我想擴展Gareth Latty的答案。 “你可能想要的是docutils.parsers.rst
的解析器”是答案的一個很好的起點,但下一步是什么? 即:
如何在python中解析restructuredtext?
下面是Python 3.6和docutils 0.14的確切答案:
import docutils.nodes
import docutils.parsers.rst
import docutils.utils
def parse_rst(text: str) -> docutils.nodes.document:
parser = docutils.parsers.rst.Parser()
components = (docutils.parsers.rst.Parser,)
settings = docutils.frontend.OptionParser(components=components).get_default_values()
document = docutils.utils.new_document('<rst-doc>', settings=settings)
parser.parse(text, document)
return document
並且可以使用例如下面的處理來處理結果文檔,這將打印文檔中的所有引用:
class MyVisitor(docutils.nodes.NodeVisitor):
def visit_reference(self, node: docutils.nodes.reference) -> None:
"""Called for "reference" nodes."""
print(node)
def unknown_visit(self, node: docutils.nodes.Node) -> None:
"""Called for all other node types."""
pass
以下是如何運行它:
doc = parse_rst('spam spam lovely spam')
visitor = MyVisitor(doc)
doc.walk(visitor)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.