我想隐藏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'}
等,结果相同。任何帮助将不胜感激
答案 0 :(得分:1)
根据nbconvert文档,必须按照您指定的步骤进行操作。但是在命令行解析traitlets
API中似乎存在一些错误,由jupyter nbconvert内部使用。因此,我尝试了一种稍微不同的方法,在jupyter_nbconvert_config.py
文件中指定配置。
步骤:
jupyter nbconvert --generate-config
这将生成默认的〜/ .jupyter / jupyter_nbconvert_config.py。
在这种情况下,编辑配置文件并指定您的配置
c.TagRemovePreprocessor.remove_input_tags = set(['remove_cell'])
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