使用docutils
python库时,当使用html5
编写器时,我找不到在输出中不包含文档信息(源代码开头的字段)的方法。
下面是一个最小的例子:
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']
)应该从输出中删除文档信息:
parts['fragment']
包含文档正文(不是HTML )。换句话说,它包含整个文档,而不包括文档标题、副标题、文档信息、页眉和页脚。
来源:
是我做错了什么,还是docutils
的HTML5编写器中的错误?
发布于 2018-06-05 22:55:05
发布于 2018-06-03 00:59:43
我建议你使用rst2html5而不是Docutil:
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>
https://stackoverflow.com/questions/50423279
复制相似问题