使用HTML5 wri删除docutils输出中的docinfo

2024-09-28 05:27:13 发布

您现在位置:Python中文网/ 问答频道 /正文

使用docutilspython库,当使用html5writer时,我找不到一种方法将docinfo(源代码开头的字段)包含在输出中。你知道吗

下面是一个简单的例子:

import docutils.io, docutils.core

SOURCE = '''\
:key: value

Title
========

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,
no sea takimata sanctus est Lorem ipsum dolor sit amet.
'''

docutils_params = {
    'input_encoding': 'utf-8',
}

pub = docutils.core.Publisher(
    source_class=docutils.io.StringInput,
    destination_class=docutils.io.StringOutput)
pub.set_components('standalone', 'restructuredtext', 'html5')
pub.process_programmatic_settings(None, docutils_params, None)
pub.set_source(SOURCE)
pub.publish()

# same thing with parts['body']
body = pub.writer.parts['fragment']

print(body)

以下是输出的第一行:

<dl class="docinfo simple">
<dt class="key">key</dt>
<dd class="key"><p>value</p>
</dd>
</dl>
<div class="section" id="title">
<h1>Title</h1>
<p>Lorem ipsum dolor sit amet,

我不想要的是整个<dl class="docinfo simple">元素。你知道吗

HTML5编写器的使用设置在pub.set_components(...行中 如果我改为使用html,我没有这个问题,但是我需要的是HTML5编写器,而不是标准的HTML编写器。你知道吗

奇怪的是,文档似乎说使用pub.writer.parts['fragment'](或等效的pub.writer.parts['body'])应该从输出中删除docinfo:

parts['fragment'] contains the document body (not the HTML ). In other words, it contains the entire document, less the document title, subtitle, docinfo, header, and footer.

source: http://docutils.sourceforge.net/docs/api/publisher.html

我是做错了什么还是HTML5编写器中的一个bug?你知道吗


Tags: thekeyiobodyclassetpartsdocutils
2条回答

我建议您使用rst2html5而不是Docutils:

from rst2html5_ import HTML5Writer
from docutils.core import publish_parts

SOURCE = '''\
:key: value

Title
========

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,
no sea takimata sanctus est Lorem ipsum dolor sit amet.
'''

parts = publish_parts(writer=HTML5Writer(), source=SOURCE)
print(parts['body'])

结果如下:

<section id="title">
    <h1>Title</h1>
    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
</section>

Docutils开发人员将其识别为一个bug并对其进行了修补。你知道吗

docutils-users邮件列表herehere

@andref's answer很棒,不过,谢谢你指向这个包。你知道吗

相关问题 更多 >

    热门问题