You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:存储Jupyter Notebook内容的最优Python数据结构及操作库

问题

我需要将Jupyter Notebook转换为Python文件,但转换前需对内容进行过滤(例如移除所有Markdown单元格),而GUI导出功能或命令行调用nbconvert无法满足该需求。因此我计划先将Notebook内容加载至Python容器(如字典列表)中完成过滤,再将剩余内容保存为Jupyter Notebook后导出为Python文件。现咨询:

  1. 存储Jupyter Notebook内容最适合的数据结构是什么?
  2. 是否存在可通过Python操作Jupyter Notebook的库?

回答

1. 存储Jupyter Notebook内容的最佳数据结构

Jupyter Notebook本质是JSON格式文件,最适配的存储结构是嵌套字典与列表的组合:

  • 顶层为字典,包含cells(单元格列表)、metadata(元数据字典)、nbformat(版本号)等核心键
  • 每个cells元素是独立字典,存储单元格类型(cell_type)、内容(source)、执行状态等关键信息
    这种结构完全对应Notebook的原生JSON结构,操作直观,无需额外转换就能和后续读写操作无缝兼容。

2. 用于操作Jupyter Notebook的Python库

有几个成熟的工具库可直接处理Notebook,优先推荐官方维护的库:

  • nbformat:Jupyter官方核心库,专门用于读写、操作Notebook的JSON结构。可以轻松将Notebook加载为Python对象/字典,修改单元格后保存回.ipynb文件,再配合nbconvert导出为.py文件。示例代码:
import nbformat
from nbconvert import PythonExporter

# 加载目标Notebook
nb = nbformat.read('your_notebook.ipynb', as_version=4)
# 过滤仅保留代码单元格
nb.cells = [cell for cell in nb.cells if cell.cell_type == 'code']
# 保存过滤后的Notebook
nbformat.write(nb, 'filtered_notebook.ipynb')
# 直接导出为Python文件
exporter = PythonExporter()
py_content, _ = exporter.from_notebook_node(nb)
with open('output.py', 'w', encoding='utf-8') as f:
    f.write(py_content)
  • papermill:原本主打参数化运行Notebook,也支持加载、修改单元格内容,适合批量处理多个Notebook的场景
  • jupyter_core:提供底层Notebook工具支持,但日常简单处理用nbformat足够

内容的提问来源于stack exchange,提问作者Manfred Weis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 05:43:36