我有一个用reStructuredText编写的博客,当我发新帖时,我当前必须手动转换为HTML。
我正在使用Google App Engine编写新的博客系统,需要一种简单的方法将rst转换为HTML。
我不想使用docutils
因为它太大而复杂。是否有更简单(理想的单一python文件)方式可以做到这一点?
答案 0 :(得分:23)
docutils是一个可以安装的库。它还安装了前端工具,可以从休息转换为各种格式,包括html。
这是一个可以使用的独立工具。
大多数转换器都会利用docutils库。
答案 1 :(得分:17)
Sphinx文档生成器Python库包含许多重构文本(RST)命令行转换器。
安装Sphinx:
$ pip install sphinx
然后使用众多rst2 * .py助手中的一个:
$ rst2html.py in_file.rst out_file.html
答案 2 :(得分:6)
查看hacking docutils的说明。你不需要整个docutils从rst产生一个html,但你需要一个读者,解析器,变换器和编写器。通过一些努力,您可以将所有这些组合到现有docutils文件中的单个文件中。
答案 3 :(得分:1)
您可以使用以下代码尝试它,用法是:
compile_rst.py yourtext.rst
或
compile_rst.py yourtext.rst desiredname.html
# compile_rst.py
from __future__ import print_function
from docutils import core
from docutils.writers.html4css1 import Writer,HTMLTranslator
import sys, os
class HTMLFragmentTranslator( HTMLTranslator ):
def __init__( self, document ):
HTMLTranslator.__init__( self, document )
self.head_prefix = ['','','','','']
self.body_prefix = []
self.body_suffix = []
self.stylesheet = []
def astext(self):
return ''.join(self.body)
html_fragment_writer = Writer()
html_fragment_writer.translator_class = HTMLFragmentTranslator
def reST_to_html( s ):
return core.publish_string( s, writer = html_fragment_writer )
if __name__ == '__main__':
if len(sys.argv)>1:
if sys.argv[1] != "":
rstfile = open(sys.argv[1])
text = rstfile.read()
rstfile.close()
if len(sys.argv)>2:
if sys.argv[2] != "":
htmlfile = sys.argv[2]
else:
htmlfile = os.path.splitext(os.path.basename(sys.argv[1]))[0]+".html"
result = reST_to_html(text)
print(result)
output = open(htmlfile, "wb")
output.write(result)
output.close()
else:
print("Usage:\ncompile_rst.py docname.rst\nwhich results in => docname.html\ncompile_rst.py docname.rst desiredname.html\nwhich results in => desiredname.html")
答案 4 :(得分:1)
在本地构建文档
Install Python.
Clone the forked repository to your computer.
Open the folder that contains the repository.
Execute: pip install -r requirements.txt --ignore-installed
Execute: sphinx-build -b html docs build
The rendered documentation is now in the build directory as HTML.
答案 5 :(得分:0)
如果Pyfunc的答案不符合您的需求,您可以考虑使用Markdown语言。语法类似于rst,而markdown.py相当小且易于使用。它仍然不是单个文件,但您可以将其作为模块导入到您可能拥有的任何现有脚本中。