首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用HTML5编写器删除docutils输出中的文档信息

使用HTML5编写器删除docutils输出中的文档信息
EN

Stack Overflow用户
提问于 2018-05-19 16:21:47
回答 2查看 148关注 0票数 3

使用docutils python库时,当使用html5编写器时,我找不到在输出中不包含文档信息(源代码开头的字段)的方法。

下面是一个最小的例子:

代码语言:javascript
复制
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)

以下是输出的第一行:

代码语言:javascript
复制
<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'])应该从输出中删除文档信息:

parts['fragment']包含文档正文(不是HTML )。换句话说,它包含整个文档,而不包括文档标题、副标题、文档信息、页眉和页脚。

来源:

是我做错了什么,还是docutils的HTML5编写器中的错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-05 22:55:05

Docutils开发人员发现这是一个bug,并对其进行了修补。

请参阅docutils-users邮件列表中的herehere

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

票数 1
EN

Stack Overflow用户

发布于 2018-06-03 00:59:43

我建议你使用rst2html5而不是Docutil:

代码语言:javascript
复制
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'])

这就是结果:

代码语言:javascript
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50423279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档