导出单个iPython Jupyter Notebook单元格输出

27

我在尝试将我的iPython Notebooks格式化,以使它们更像日志。

使用display(HTML())结构可以使一切都变得好看并且相对容易组织。

我想在其他媒体上使用某些单元格的输出,例如幻灯片演示。我现在的做法是截取该区域的屏幕截图,但然后所有内容都成为像素,无法进行任何改进。

有没有办法以某种有用的格式呈现单个单元格的输出?


1
HTML对你来说是可接受的格式吗?我发现它可以自动嵌入图像甚至视频。在这种情况下,你只需将HTML原样写入文件即可。 - cfh
你尝试过在演示文稿中使用markdown嵌入内容吗? - Ankita Mehta
2个回答

6

1
由于这是好的,因此已点赞,但这是文本捕获。 - ntg
谢谢 @ntg 希望能对某人有所帮助! - Ankita Mehta
与一条评论相反,%%capture jupyter 魔法函数不仅可以捕获文本:默认情况下它会捕获所有输出(包括 display),然后您可以选择使用选项 --no-stderr、--no-stdout 或者 --no-display 不捕获其中的某些内容。 %%capture 的主要限制是它是一个 单元格魔法函数(%capture,行版本未实现),因此在笔记本的另一个单元格中必须执行捕获数据保存到文件的操作。 - Ken

4

截至目前,无法在Jupyter中导出单个单元格输出,但您可以将整个笔记本转换为更有用的格式,然后仅剪切出所需部分。虽然不是最佳选择,但至少对于输出质量而言,它仍然比您当前的解决方法要好。

您可以通过以下不同方式进行操作:

  1. 文件 -> 导出笔记本为... -> 您喜欢的文件格式
  2. 如果您想以编程方式执行此操作,可以像这样从命令行使用nbconvert

    nbconvert --to(您喜欢的输出格式)yourNotebook.ipynb

您也可以在笔记本内部执行此操作,在单元格中执行此代码(例如HTML):

from nbconvert import HTMLExporter
import codecs
import nbformat

notebook_name = 'YOUR_NOTEBOOK_NAME.ipynb'
output_file_name = 'output.html'

exporter = HTMLExporter()
output_notebook = nbformat.read(notebook_name, as_version=4)

output, resources = exporter.from_notebook_node(output_notebook)
codecs.open(output_file_name, 'w', encoding='utf-8').write(output)

大多数库都允许您将程序结果导出到任何所需的输出(如pandas、matplotlib、altair...),因此您应该尝试使用它们。

2
“修剪掉不需要的部分”可以通过给这些单元格打上您选择的标签,然后使用TagRemovePreprocessor选项来完成。 - Martijn Pieters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接