欢迎访问宙启技术站
智能推送

使用nbformatNotebookNode()在Python中创建交互式Jupyter笔记本

发布时间:2024-01-13 14:10:09

在Python中,可以使用nbformat模块的NotebookNode类来创建交互式Jupyter笔记本。NotebookNode是一个字典类,可以包含Jupyter笔记本的各个元素,如元数据、单元格列表等。

以下是创建一个简单的Jupyter笔记本并使用nbformat.NotebookNode()的示例:

from nbformat import NotebookNode

# 创建一个空的NotebookNode对象
nb = NotebookNode()

# 设置笔记本元数据
nb.metadata = {'kernelspec': {
    'display_name': 'Python 3',
    'language': 'python',
    'name': 'python3'
  },
  'language_info': {
    'codemirror_mode': {
      'name': 'ipython',
      'version': 3
    },
    'file_extension': '.py',
    'mimetype': 'text/x-python',
    'name': 'python',
    'nbconvert_exporter': 'python',
    'pygments_lexer': 'ipython3',
    'version': '3.9.5'
  }
}

# 创建一个代码单元格
cell_code = NotebookNode(
  cell_type='code',
  execution_count=1,
  metadata={'collapsed': False},
  source='print("Hello, World!")'
)

# 创建一个Markdown单元格
cell_markdown = NotebookNode(
  cell_type='markdown',
  source='''# Heading
This is a markdown cell.'''
)

# 将单元格添加到笔记本的单元格列表中
nb.cells = [cell_code, cell_markdown]

# 输出笔记本的JSON表示
print(nb)

在这个示例中,我们首先创建了一个空的NotebookNode对象。然后,我们设置了笔记本的元数据,包括内核规范和语言信息。接下来,我们创建了一个代码单元格和一个Markdown单元格,并为它们设置了相应的属性,如单元格类型、执行次数、元数据和内容。最后,我们将这些单元格添加到笔记本的单元格列表中,并输出了笔记本的JSON表示。

执行上述代码,将得到如下的JSON表示:

{
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.9.5"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "collapsed": false
      },
      "source": "print(\"Hello, World!\")"
    },
    {
      "cell_type": "markdown",
      "source": "# Heading

This is a markdown cell."
    }
  ]
}

可以看到,这个JSON表示包含了笔记本的元数据和单元格列表。

使用nbformat.NotebookNode()创建交互式Jupyter笔记本是灵活且直观的,通过设置元数据和创建不同类型的单元格,可以构建复杂的交互式笔记本。希望上述示例对你有所帮助!