使用docutils将scipy docstrings(reST)转换为HTML

时间:2015-02-24 10:12:02

标签: python html restructuredtext docstring docutils

我正在设计一个过滤器设计GUI,并希望在QTextBrowser中显示来自Python的scipy.signal的文档字符串,需要HTML格式。我认为docutils应该为我做的工作,我尝试了

from docutils.core import publish_string
from scipy.signal import remez
self.txtFiltInfoBox.append(publish_string(remez.__doc__,
          writer_name='html'))

其中txtFiltInfoBox是QTextBrowser实例。但是,publish_string会在文档字符串中遇到的第一个标题(“参数”)上发生阻塞:

docutils.utils.SystemMessage: <string>:10: (SEVERE/4) Unexpected section title.

Parameters
----------

我认为原因是方法的整个docstring是缩进的,导致reST标记无效。是否有一种简单的方法可以使用docstring或告诉publish_string忽略一定数量的前导空格?

完整代码可在pyFDA project找到。

1 个答案:

答案 0 :(得分:0)

您可以使用textwrap.dedent,就像文档所说的那样:

  

text 中的每一行删除任何常见的前导空格。

例如(来自a similar question on CodeReview):

>>> import textwrap
>>> print(textwrap.dedent(
        """
        Usage examples:
        Test deployment:
            $ fab [noinput] test deploy
        Staging deployment:
            $ fab [noinput] staging deploy
        Production deployment:
            $ fab [noinput] production deploy
        """
))

Usage examples:
Test deployment:
    $ fab [noinput] test deploy
Staging deployment:
    $ fab [noinput] staging deploy
Production deployment:
    $ fab [noinput] production deploy