如何将Jupyter Notebook转换为无# In[]注释的干净Python文件?
解决Jupyter Notebook转Python脚本时保留
# In[]注释的问题 我之前也碰到过这个情况!你用--no-prompt参数没生效,大概率是因为部分旧版本的nbconvert对这个参数的处理不够彻底,或者需要换个方式来清除这些烦人的注释。下面给你几个实用的解决办法:
方法1:升级nbconvert到最新版本
旧版本的--no-prompt可能没有完全移除# In[]这类注释,升级到最新版后再执行原命令通常就能解决问题:
pip install --upgrade nbconvert jupyter nbconvert --to script --no-prompt notebook.ipynb
方法2:用sed命令后处理生成的脚本
如果不想升级依赖,转换完成后可以直接用sed命令批量删除所有# In[xxx]格式的行:
# 先执行转换 jupyter nbconvert --to script --no-prompt notebook.ipynb # 清除注释行 sed -i '/# In\[[0-9]*\]/d' notebook.py
注:Windows系统如果没有sed,可以用PowerShell的替代命令,或者直接手动删除这些行,也可以用Python脚本批量处理。
方法3:使用自定义nbconvert模板(适合批量处理场景)
如果需要频繁转换干净的脚本,可以创建一个自定义模板来彻底去掉这些注释:
- 创建一个名为
clean_script.tpl的模板文件,内容如下:
{%- extends 'script.tpl' -%} {% block in_prompt %}{% endblock in_prompt %} {% block input %} {{ cell.source | ipython2py }} {% endblock input %}
- 用这个模板执行转换命令:
jupyter nbconvert --to script --template clean_script.tpl notebook.ipynb
执行以上任意一种方法后,生成的Python脚本就会是你期望的干净版本:
#!/usr/bin/env python # coding: utf-8 print("Hello World") print("Hello Jupyter")
内容的提问来源于stack exchange,提问作者naman
相关产品推荐
相关产品推荐

