在Python中以编程方式将StructuredText转换为纯文本
假设我有一些字符串中的重构文本源在Python中以编程方式将StructuredText转换为纯文本,python,python-sphinx,docutils,Python,Python Sphinx,Docutils,假设我有一些字符串中的重构文本源 source = """ ============ Introduction ============ Hello world. .. code-block:: bash $ echo Greetings. """ import sys import docutils.nodes import docutils.parsers.rst import docutils.utils import sphinx.writers.text impo
source = """
============
Introduction
============
Hello world.
.. code-block:: bash
$ echo Greetings.
"""
import sys
import docutils.nodes
import docutils.parsers.rst
import docutils.utils
import sphinx.writers.text
import sphinx.builders.text
def parse_rst(text: str) -> docutils.nodes.document:
parser = docutils.parsers.rst.Parser()
components = (docutils.parsers.rst.Parser,)
settings = docutils.frontend.OptionParser(components=components).get_default_values()
document = docutils.utils.new_document('<rst-doc>', settings=settings)
parser.parse(text, document)
return document
if __name__ == '__main__':
document = parse_rst(source)
source=”“”
============
介绍
============
你好,世界。
…代码块::bash
$echo问候。
"""
导入系统
导入docutils.nodes
导入docutils.parsers.rst
导入docutils.utils
导入sphinx.writers.text
导入sphinx.builders.text
def parse_rst(text:str)->docutils.nodes.document:
parser=docutils.parsers.rst.parser()
components=(docutils.parsers.rst.Parser,)
settings=docutils.frontend.OptionParser(components=components.get_default_values)()
document=docutils.utils.new_文档(“”,settings=settings)
parser.parse(文本、文档)
返回文件
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
document=parse_rst(源)
我想使用Python将其转换为纯文本,而不使用reST标记
我试图使用,但它似乎想要一个App
对象,而不是字符串
- 是关于在命令行上使用文件而不是字符串手动执行此操作的相关问题
- 解析代码来自
import sys
import textwrap
import types
import docutils.nodes
import docutils.parsers.rst
import docutils.utils
import sphinx.writers.text
import sphinx.builders.text
import sphinx.util.osutil
def parse_rst(text: str) -> docutils.nodes.document:
parser = docutils.parsers.rst.Parser()
components = (docutils.parsers.rst.Parser,)
settings = docutils.frontend.OptionParser(
components=components
).get_default_values()
document = docutils.utils.new_document("<rst-doc>", settings=settings)
parser.parse(text, document)
return document
if __name__ == "__main__":
source = textwrap.dedent(
"""\
============
Introduction
============
Hello world.
.. code-block:: bash
$ echo Greetings.
"""
)
document = parse_rst(source)
app = types.SimpleNamespace(
srcdir=None,
confdir=None,
outdir=None,
doctreedir="/",
config=types.SimpleNamespace(
text_newlines="native",
text_sectionchars="=",
text_add_secnumbers=False,
text_secnumber_suffix=".",
),
tags=set(),
registry=types.SimpleNamespace(
create_translator=lambda self, something, new_builder: sphinx.writers.text.TextTranslator(
document, new_builder
)
),
)
builder = sphinx.builders.text.TextBuilder(app)
translator = sphinx.writers.text.TextTranslator(document, builder)
document.walkabout(translator)
print(translator.body)
狮身人面像有一个。从命令行:
make text
make text