【问题标题】:How scrub code cell contents from a jupyter notebook?如何从 jupyter 笔记本中清理代码单元格内容?
【发布时间】:2021-10-12 15:51:55
【问题描述】:

我正在开发一系列用于教学目的的 jupyter 笔记本。我想把这些笔记本给学生,但是,首先我想擦除代码单元格的内容(而不是删除单元格本身!)。重点是学生们通过笔记本并填写单元格。

例如,这是我创建的:

这是我要为学生导出的内容:

有很多笔记本,所以我想自动完成这项任务。我尝试使用jupyter nbconvert,但默认选项(如--no-input)似乎没有达到我想要的效果。我真的必须深入 jinja 模板的世界,还是有更简单的方法?

【问题讨论】:

  • 笔记本只是 JSON 文件,因此您可以使用所选语言(我猜是 Python)创建自定义脚本,用空行替换代码单元格的内容。如果您遇到困难,请在此处添加任何相关详细信息并在评论中标记我。
  • @krassowski 最后这就是我所做的,但我发现它相当不令人满意,并且希望 nbconvert 更易于使用。

标签: jupyter-notebook jinja2 jupyter-lab nbconvert


【解决方案1】:

这不是一个常见的用例,通常人们想要删除单元格的输出。但是你可以写类似ClearOutputPreprocessor的代码:

def clear_inputs(notebook_file):
    with open(notebook_file) as fp:
        raw_notebook = nbformat.read(fp, as_version=4)

    for cell in raw_notebook.get("cells"):
        if cell.cell_type == "code":
            cell.source = []

    with open(notebook_file, "w") as fp:
        nbformat.write(raw_notebook, fp)

【讨论】:

    猜你喜欢
    • 2017-08-04
    • 1970-01-01
    • 2014-09-09
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 2018-03-29
    • 2016-06-16
    相关资源
    最近更新 更多