使用 nbconvert 作为库运行预处理器

2024-03-18

我想使用预处理器运行 nbconvert,该预处理器会删除标有“skip”标签的单元格。我可以从命令行执行此操作,但是当我尝试在笔记本中使用 nbconvert API 时,我遇到了问题。

一个例子

按照中的示例文档 https://nbconvert.readthedocs.io/en/latest/nbconvert_library.html#Quick-overview,我拿了一个笔记本来工作。

from urllib.request import urlopen

url = 'http://jakevdp.github.com/downloads/notebooks/XKCD_plots.ipynb'
response = urlopen(url).read().decode()

import nbformat
nb = nbformat.reads(response, as_version=4)

我将修改一个单元格,以便在输出中跳过它。

nb.cells[1].metadata = {'tags': ['skip']}

命令行

保存文件,然后从命令行运行 nbconvert:

nbformat.write(nb, 'nb.ipynb')

%%bash
jupyter nbconvert --to latex \
--TagRemovePreprocessor.remove_cell_tags='{"skip"}' \
--TagRemovePreprocessor.enabled=True \
'nb.ipynb'

这有效。输出nb.tex文件不包含标记为“skip”的单元格。

API

现在让我们使用 API 来尝试一下。首先,不进行任何预处理:

import nbconvert
latex, _ = LatexExporter().from_notebook_node(nb)
print(latex[:25])

\documentclass[11pt]{arti

再说一遍,没问题。转换正在进行中。

现在,尝试使用我在命令行中使用的相同预处理器:

from traitlets.config import Config

c = Config()
c.RemovePreprocessor.remove_cell_tags = ('skip',)
c.LatexExporter.preprocessors = ['TagRemovePreprocessor']

LatexExporter(config=c).from_notebook_node(nb)

这次,我得到:

ModuleNotFoundError:没有名为“TagRemovePreprocessor”的模块

据我所知,这段代码与文档中的代码示例 https://nbconvert.readthedocs.io/en/latest/removing_cells.html#removing-pieces-of-cells-using-cell-tags,除了我使用的是 Latex 导出器而不是 HTML。那么为什么它不起作用呢?


对于您的具体情况,我相信您可以通过更改来解决问题:c.RemovePreprocessor.remove_cell_tags = ('skip',) -> c.TagRemovePreprocessor.remove_cell_tags = ('skip',)


为了像我一样通过搜索遇到此线程的其他人的利益

ModuleNotFoundError: No module named 'TagRemovePreprocessor'

有一个开放问题 https://github.com/jupyter/nbconvert/issues/764 with TagRemovePreprocessor这导致除HTMLExporter (and LatexExporter?)自动禁用此预处理器。

就我而言,我试图使用NotebookExporter并且需要显式启用预处理器并更改预处理级别,如下所示:

import json
from traitlets.config import Config
from nbconvert import NotebookExporter
import nbformat

c = Config()
c.TagRemovePreprocessor.enabled=True # Add line to enable the preprocessor
c.TagRemovePreprocessor.remove_cell_tags = ["del_cell"]
c.preprocessors = ['TagRemovePreprocessor'] # Was previously: c.NotebookExporter.preprocessors

nb_body, resources = NotebookExporter(config=c).from_filename('notebook.ipynb')
nbformat.write(nbformat.from_dict(json.loads(nb_body)),'stripped_notebook.ipynb',4)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 nbconvert 作为库运行预处理器 的相关文章

随机推荐

  • Python:无法将浮点 NaN 转换为整数

    我应用返回浮动的移动平均逻辑 我先将该 float 转换为 int 然后再使用它在 OpenCV 中绘制线条 但出现以下错误 ValueError cannot convert float NaN to integer 示例代码 def m
  • API 设计:公开 XML 或对象 #2

    我最近问了这个问题 公开 XML 或对象 https stackoverflow com questions 368521 api design expose xml or objects 感谢大家的回复 有一点需要澄清 API 始终可以远
  • 如何在 PostgreSQL 中以事务方式插入 max(order_field) + 1 行

    我需要在 PostgreSQL 表中插入一行 其中有一列包含表行子集上同一列的最大值 1 该列用于对该子集中的行进行排序 我正在尝试更新插入后触发器中的列值 但我在不同行中获取该列的重复值 在短时间内进行大量插入的并发环境中 避免子集中排序
  • 如何从 SSL 证书中提取密钥?

    我有一个在以下网站购买的 SSL 证书 pem crt der格式 我想知道如何从证书中获取密钥文件 有什么办法可以做到这一点吗 您可以提取公钥 这的用处有限 也许您将在其他不使用证书的工具 例如 SSH 或 PGP 中使用相同的密钥 使用
  • JTable 的 ScrollPane 行为异常

    我有一个JPanel组件与JTable在它里面 当我运行下面编写的代码时 表格会正确呈现和更新 一旦我尝试使用scrollPane方法 该表根本不呈现 谁能向我解释这是为什么 private static class GameHistory
  • Java中有没有内置的方法来增加字体大小?

    Java中有没有内置的方法来增加字体大小 The Font http java sun com javase 6 docs api java awt Font html类允许您指定字体大小 因此 要创建字体 您可以执行以下操作 Font f
  • 当行突出显示时设置 cellrenderertext 前景色

    当我有一个gtk CellRendererText 我可以关联它的foreground用树存储的一列着色 并设置foreground set属性设置为 True 以更改该列中文本的颜色 但是 当选择具有彩色列的行时 其颜色会消失 并且与任何
  • getContext().getSystemService 错误

    所以我只是想在我的 getView 函数中膨胀一个视图 而 getContext 由于某种原因说它是未定义的 package com MTSUAndroid import com MTSUAndroid Alarm Settings Eff
  • 是否有类似于 C sscanf 的 VB6 函数?

    我正在尝试读取由以下形式的文本行组成的文件 first value 1352 2 second value 12 third value 32323 first value 1233 2 second value 22 third valu
  • 关闭 Numba 中的列表反射

    我正在尝试使用 Numba 加速我的代码 我传递给函数的参数之一是可变列表列表 当我尝试更改子列表之一时 出现此错误 在 nopython 模式管道中失败 步骤 nopython 模式后端 无法反映反射容器的元素 反射列表 反射列表 int
  • 在 TFS API 中,如何获取给定测试的完整类名?

    我有一个ITestCaseResult http msdn microsoft com en us library microsoft teamfoundation testmanagement client itestcaseresult
  • postgresql 多个子查询

    我手头有一项任务 要求我返回一个学生的详细信息 该学生参加了一位姓霍夫曼的老师所教的课程 但我陷入了困境 SELECT FROM Public Class WHERE tid SELECT tid FROM Public Tutor WHE
  • 在 MVC Web 应用程序中访问 profile.newproperty

    我最近问了这个问题如何保留匿名用户选择 例如 主题选择 https stackoverflow com questions 11706349 how to persist anon user selection ex theme selec
  • 将解析信息添加到 Robolectric 包管理器

    这个问题与我想做的非常相似 如何使用 Robolectric 隐藏 PackageManager https stackoverflow com questions 12902777 how can i shadow the package
  • $.when 不等待 Ajax 请求完成

    我想首先使用 Backbone js 渲染一个视图 该视图显示从服务器拉取的文章 然后 我想将其标记为 已见 并将未见消息的计数返回给路由器 因为它需要可供其他视图使用 所以在我的路由器中 我有 getArticle function id
  • 使用javascript在IE中设置cookie

    document cookie cookiename cookievalue 过期 星期一 12Jun2015 00 00 00 路径 我在 Internet Explorer 10 上运行此脚本 但它不在 2 个 IE 选项卡之间共享 c
  • Unity 2D Trail 渲染器碰撞

    我制作 2D unity 游戏 但我面临着我的游戏所依赖的一个主要问题 我将一个轨迹渲染器组件附加到我的播放器上 我需要的是使渲染器成为一个碰撞器 充当网格碰撞器我只是不知道是否可以使碰撞器呈现 2D 轨迹渲染器的形状 我在谷歌上搜索过 但
  • 将 StackExchange.Redis 客户端与 Redis 集群结合使用

    如何告诉 StackExchange Redis v1 0 481 它即将连接到 Redis 集群 v3 2 6 如果重要的话 而不仅仅是独立 复制实例 例如 当我使用 redis cli 时 我必须传递 c 标志以使其具有集群感知能力 S
  • 尝试修复 tkinter GUI 冻结问题(使用线程)

    我有一个 Python 3 x 报告创建器 它的 I O 限制非常大 由于 SQL 而不是 Python 以至于主窗口将 锁定 minutes在创建报告时 所需要的只是能够在 GUI 锁定时使用标准窗口操作 移动 调整大小 最小化 关闭等
  • 使用 nbconvert 作为库运行预处理器

    我想使用预处理器运行 nbconvert 该预处理器会删除标有 skip 标签的单元格 我可以从命令行执行此操作 但是当我尝试在笔记本中使用 nbconvert API 时 我遇到了问题 一个例子 按照中的示例文档 https nbconv