gpt4 book ai didi

python - 转换为(不是从)ipython Notebook 格式

转载 作者:IT老高 更新时间:2023-10-28 20:29:08 25 4
gpt4 key购买 nike

IPython Notebook 自带 nbconvert ,可以将笔记本导出为其他格式。但是如何以相反的方向转换文本?我问是因为我已经有了不同格式的 Material 和良好的工作流程,但我想利用 Notebook 的交互环境。

一个可能的解决方案:可以通过导入 .py 文件来创建笔记本,并且文档指出当 nbconvert 将笔记本导出为 python 脚本时,它嵌入可用于重新创建笔记本的注释中的指令。但是信息附带a disclaimer关于这种方法的局限性,并且在我能找到的任何地方都没有记录接受的格式。 (奇怪的是,在描述笔记本 JSON format 的部分中显示了一个示例)。谁能提供更多信息或更好的选择?

编辑(2016 年 3 月 1 日):已接受的答案不再有效,因为由于某种原因,Notebook API 版本 4 不支持这种输入格式。 我已添加 a self-answer 展示了如何使用当前 (v4) API 导入笔记本。 (我并没有不接受当前的答案,因为它当时解决了我的问题,并指出了我在 self 回答中使用的资源。)

最佳答案

由于接受的答案中的代码不再起作用,我添加了这个 self 答案,显示如何使用当前 (v4) API 导入笔记本。

输入格式

IPython Notebook API 的第 2 版和第 3 版可以导入带有特殊结构注释的 python 脚本,并根据需要将其分解为单元格。这是一个示例输入文件(原始文档 here)。前两行被忽略,并且是可选的。 (事实上​​,读者会忽略文件中任何位置的 coding:<nbformat> 行。)

# -*- coding: utf-8 -*-
# <nbformat>3.0</nbformat>

# <markdowncell>

# The simplest notebook. Markdown cells are embedded in comments,
# so the file is a valid `python` script.
# Be sure to **leave a space** after the comment character!

# <codecell>

print("Hello, IPython")

# <rawcell>

# Raw cell contents are not formatted as markdown

(API 还接受过时的指令 <htmlcell><headingcell level=...>,它们会立即转换为其他类型。)

如何导入

由于某种原因,Notebook API 版本 4 不支持这种格式。它仍然是一种不错的格式,因此通过导入版本 3 并升级来支持它是值得的。 原则上就是两行代码,加上i/o:

from IPython.nbformat import v3, v4

with open("input-file.py") as fpin:
text = fpin.read()

nbook = v3.reads_py(text)
nbook = v4.upgrade(nbook) # Upgrade v3 to v4

jsonform = v4.writes(nbook) + "\n"
with open("output-file.ipynb", "w") as fpout:
fpout.write(jsonform)

但没那么快!事实上,notebook API 有一个讨厌的 bug:如果输入的最后一个单元格是 markdown 单元格,v3.reads_py()会失去它。最简单的解决方法是添加伪造的 <markdown>末尾单元格:bug会删除,大家开心。所以在通过 text 之前请执行以下操作至v3.reads_py() :

text += """
# <markdowncell>

# If you can read this, reads_py() is no longer broken!
"""

关于python - 转换为(不是从)ipython Notebook 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23292242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com