如何在Python中解析重构文本?

2023-12-29

是否有任何模块可以将重构文本解析为树模型?

docutils 或 sphinx 可以做到这一点吗?


我想扩展加雷斯·拉蒂(Gareth Latty)的回答。 “你可能想要的是解析器docutils.parsers.rst“是答案的一个很好的起点,但接下来会发生什么?即:

如何在Python中解析重构文本?

以下是 Python 3.6 和 docutils 0.14 的确切答案:

import docutils.nodes
import docutils.parsers.rst
import docutils.utils
import docutils.frontend

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

可以使用例如下面的方法处理生成的文档,这将打印文档中的所有引用:

class MyVisitor(docutils.nodes.NodeVisitor):

    def visit_reference(self, node: docutils.nodes.reference) -> None:
        """Called for "reference" nodes."""
        print(node)

    def unknown_visit(self, node: docutils.nodes.Node) -> None:
        """Called for all other node types."""
        pass

运行方法如下:

doc = parse_rst('spam spam lovely spam')
visitor = MyVisitor(doc)
doc.walk(visitor)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中解析重构文本? 的相关文章

随机推荐

  • 在表视图单元格中显示多行 - IOS

    我想在我正在开发的 IOS 应用程序的表格单元格视图中显示多行 准确地说 我有一个表视图 其中将填充从服务器返回的 JSON 数据 如果返回的状态为 0 或 2 状态是为配置文件返回的 JSON 对象之一 我必须显示 5 6 行的错误消息
  • 有什么方法可以从 Eclipse 自动生成 ant build.xml 文件吗?

    从 Eclipse 中 我发现我可以轻松地为我的项目导出 Ant 构建文件 它提供对第三方库和一些基本目标的引用 我从我的全局构建文件中使用它 唯一让我困扰的是 如果项目结构中发生了某些修改 例如添加新的第 3 方库 我们必须考虑 是的 有
  • 为什么我无法设置 DataGridTextColumn 的样式?

    我尝试创建一个样式DataGridTextColumn用下面的代码 然而 Visual Studio 2010 的亮点 x Type DataGridTextColumn 用蓝线并详细说明 Exception has been thrown
  • 当块已经有自己的作用域时,设置 Ruby 块局部变量的目的是什么?

    Learning about Ruby blocks here http rubylearning com satishtalim ruby blocks html What is the point of having block loc
  • 我可以让 Tomcat 作为转储堆服务运行吗?

    我正在尝试让 Tomcat 当前在 Windows 2003 机器上作为服务运行 将堆转储到OutOfMemoryError Tomcat 正在运行 Hudson 它在构建的尾部报告了堆空间问题 手动运行构建不会产生此类错误 Hudson
  • 即使目标存在也复制文件(在 Qt 中)

    In the QFile 复制 http doc qt digia com qt qfile html copy 2它说的文档 如果名为 newName 的文件已存在 则 copy 返回 false 即 QFile 不会覆盖它 但即使目的地
  • Reactjs - event.stopPropagation 不起作用

    我有一个Post基本上渲染的是一张卡片的组件 如果该帖子被点击 那么URL应该路由到 expand 现在我有另一个组件称为DeleteTemplate它呈现一个按钮并单击它呈现一个Modal 现在 我已经使用了这个DeleteTemplat
  • 在 iPhone/iPad 上保存 HLS 流

    我有一个 iPhone iPad 应用程序 可以播放电视频道的 HTTP 直播 我想添加录制功能以将直播流保存在设备上 就像电视录像机一样 我不知道是否可能 但我认为我有两种方法来录制流 保存屏幕上显示的输出流 但我不知道该怎么做 打开 m
  • PHP:如何禁用危险函数

    我怎样才能禁用危险的eval功能 可以使用以下方法完成吗ini set功能 另外如何禁用以下功能 我们可以使用禁用它们吗ini set功能 allow url fopen allow url include exec shell exec
  • 无法安装包“Microsoft.Owin.Security 2.0.1”

    无法安装包 Microsoft Owin Security 2 0 1 您正在尝试将此包安装到面向 NETFramework Version v4 0 的项目中 但该包不包含任何与该框架兼容的程序集引用或内容文件 有关详细信息 请联系包作者
  • 是否可以在不失去对文本框的焦点的情况下单击按钮?

    我正在尝试在 C WPF 项目中开发一个触摸屏键盘控件 当 TextBox 获得焦点时该控件将可见 而当 TextBox 失去焦点时该控件将隐藏 我见过的触摸屏键盘项目通过将键盘定义为新窗口而不是控件来实现这一点 对于我的应用程序 我真的希
  • 如何为 listView 项目使用 PercentRelativeLayout

    我正在尝试使用百分比相对布局 into 列表显示 但它不起作用 高度和宽度百分比被忽略 列表视图中没有显示任何内容 它只适用于棉花糖 这是列表项 xml
  • 手动设置 aws-amplify 用户会话

    我有一个由多个应用程序使用的认知用户池 我有一个中央身份验证应用程序 用户可以在其中登录 注册 重置密码 等任何与身份验证相关的内容 我还有五个用户可以访问的其他应用程序 我没有让他们登录每个应用程序 而是将身份验证应用程序嵌入到 ifra
  • 节点更新特定包

    我想更新我的浏览器同步无需更新我的所有节点包 我怎样才能实现这个目标 我当前版本的浏览器同步没有浏览器同步 GUI email protected cdn cgi l email protection email protected cdn
  • 来自文本文件的 Argparse 自定义帮助

    我想使用 argparse 库 因为它的灵活性 但我在禁用默认帮助对话框以显示文本文件中的自定义帮助对话框时遇到问题 我想做的就是在传递 h 或 help 选项时显示文本文件中的文本 这是我如何尝试的示例 parser argparse A
  • stanford-corenlp 中的默认线程数是多少

    stanford corenlp 中的默认线程数是多少 具体来说 是命名实体提取器 然后是信息提取器 另外 我希望两者都使用单个线程进行调试 我该如何设置 Thanks 默认为 1 个线程 有两种方法可以在多线程模式下运行斯坦福 CoreN
  • 通过蓝牙打印机Android打印图像

    你好 我是开发 Android 应用程序的新手 我需要创建一个应用程序 平板电脑 三星 10 1 Android 版本 3 1 通过蓝牙打印机 佳能 CP800 SELPHY 打印图像 我已经尝试过 IPrint 但没有成功 是否可以通过
  • NodeJS jenkins 插件坏了?

    我刚刚在 Jenkins 1 526 上安装了 NodeJS 插件 https wiki jenkins ci org display JENKINS NodeJS Plugin https wiki jenkins ci org disp
  • Ember.js:如何分析vendor.js中的错误

    我已在 stage 环境中部署了 ember cli 应用程序 以便让队友测试该应用程序 在我已经实现的应用程序中Ember onerror通过电子邮件向我发送阶段和生产环境中发生的错误 Ember onerror function dat
  • 如何在Python中解析重构文本?

    是否有任何模块可以将重构文本解析为树模型 docutils 或 sphinx 可以做到这一点吗 我想扩展加雷斯 拉蒂 Gareth Latty 的回答 你可能想要的是解析器docutils parsers rst 是答案的一个很好的起点 但