由于类型错误,无法通过标签删除某些单元格

时间:2018-11-23 08:59:11

标签: jupyter-notebook

我想隐藏jupyter笔记本的某些部分并遇到可以实现此目的的标签。我在笔记本中用remove_cell标记了单​​元格,试图运行

$ jupyter nbconvert test.ipynb --TagRemovePreprocessor.remove_input_tags="{'remove_cell'}" 

但是我总是收到以下错误:

traitlets.traitlets.TraitError: The 'remove_input_tags' trait of a TagRemovePreprocessor instance must be a set, but a value of type 'unicode' (i.e. u'{remove_cell}') was specified.

我尝试将"{'remove_cell'}"更改为各种格式,例如{'remove_cell'}等,结果相同。任何帮助将不胜感激

3 个答案:

答案 0 :(得分:1)

根据nbconvert文档,必须按照您指定的步骤进行操作。但是在命令行解析traitlets API中似乎存在一些错误,由jupyter nbconvert内部使用。因此,我尝试了一种稍微不同的方法,在jupyter_nbconvert_config.py文件中指定配置。

步骤:

  1. jupyter nbconvert --generate-config 这将生成默认的〜/ .jupyter / jupyter_nbconvert_config.py。

  2. 在这种情况下,编辑配置文件并指定您的配置 c.TagRemovePreprocessor.remove_input_tags = set(['remove_cell'])

  3. 运行jupyter nbconvert test.ipynb,这将删除标记的单元格并将其转换为默认的HTML页面。

答案 1 :(得分:0)

我无需使用方括号即可编辑此文件,而无需使用方括号代替括号,该方括号与单元格元数据中标记的格式匹配。

因此,在单元格元数据中,我有以下内容:

{
    "tags": ["remove_cell"]
}

在我使用的命令行上:

jupyter nbconvert test.ipynb --TagRemovePreprocessor.remove_input_tags="['remove_cell']"

已成功从HTML输出中删除了带有此标记的所有单元格。

答案 2 :(得分:0)

nbconvert在执行笔记本时没有隐藏带有标签的单元格,这是我在https://github.com/jupyter/nbconvert/issues/1300上找到的最有用的示例: 因此,潜在的问题是代表您添加的预处理程序是无序的,因此在TagRemovePreprocessor之后应用--execute启用ExecutePreprocessor的可能性很小。要解决此问题,您可以通过以下操作将预处理器设置为以显式顺序使用:

jupyter nbconvert notebooks/demo_notebook.ipynb \
--TagRemovePreprocessor.remove_input_tags='{"remove-input"}' \
--TagRemovePreprocessor.remove_all_outputs_tags='{"remove-output"}' \
--Exporter.preprocessors='["nbconvert.preprocessors.ExecutePreprocessor","nbconvert.preprocessors.TagRemovePreprocessor"]' \
--to notebook