将reStructuredText解析为HTML

56 投票
1 回答
10399 浏览
提问于 2025-04-16 21:17

我正在制作一个框架,让开发者可以用reStructuredText来描述他们的包。我想把这些reStructuredText解析成HTML,这样就可以在图形界面中展示了。

我对很棒的Sphinx有些了解,但之前从来没有解析过reStructuredText。我想象中应该有一个函数,它接收一段reStructuredText字符串,可能还有几个额外的参数,然后返回一段HTML字符串。

于是我查了一下Docutils,它负责解析reStructuredText。不过我完全搞不懂怎么找到这个函数。网上的文档也不太完整。docutils.parsers.rst模块里的很多函数似乎都是针对文件名的,但我没有文件名!我只是处理字符串而已。

我尝试创建一个Parser和一个Document,然后使用parse方法,但我却遇到了一个关于缺少.tab_width设置的错误。

有没有人知道怎么把reStructuredText解析成HTML呢?

1 个回答

67

试试这样做:

>>> from docutils.core import publish_string
>>> publish_string("*anurag*", writer_name='html')

publish_string 接受一个字符串并输出一个字符串,或者你可以使用 publish_parts 来获取 HTML 文档的特定部分,比如:

>>> from docutils.core import publish_parts
>>> print publish_parts("*anurag*", writer_name='html')['html_body']
<p><em>anurag</em></p>

撰写回答