python - 如何导出和保存链接的 Jupyter 笔记本?

标签 python html markdown jupyter-notebook jupyter

我有多个相互链接的 Jupyter 笔记本,例如 Notebook1.ipydb 包含指向 Notebook2.ipydb 的链接,其 Markdown [Notebook2](Notebook2.ipynb)反之亦然。

通过 nbconvert 将所有笔记本导出为 HTML 时,Notebook2.ipynb 的链接被保留。我想将该链接更改为导出的 Notebook2.html,以便链接的 HTML 文件充当静态网站。

我尝试使用 get_ipython().__class__.__name__ 检测我是否在 iPython 中运行,但它会在转换为 HTML 之前执行此代码。

有没有办法检测静态文件以有条件地渲染正确的 Markdown ?还有其他方法可以保存链接的笔记本吗?

最佳答案

实际上只有两个选择。一个是首先链接到 Notebook2.html,另一个是为 nbconvert 创建自定义预处理器。

from nbconvert.preprocessors import Preprocessor
import re


class CustomPreprocessor(Preprocessor):

    def preprocess_cell(self, cell, resources, index):

        if 'source' in cell and cell.cell_type == "markdown":
            cell.source = re.sub(r"\[(.*)\]\(\1\.ipynb\)",r"[\1](\1.html)",cell.source)

        return cell, resources

将其保存到文件,然后添加到您的 nbconvert 配置文件(位于 ~/.jupyter/jupyter_nbconvert_config.py 或可以使用命令 jupyter nbconvert --generate- 生成配置)行:

c.HTMLExporter.preprocessors = ['CustomPreprocessor.CustomPreprocessor']

这假定自定义预处理器文件名为 CustomPreprocessor 并且位于与您尝试转换的文件相同的目录中。您也可以将其正确安装为模块。

关于python - 如何导出和保存链接的 Jupyter 笔记本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42255564/

相关文章:

java - 嵌入式 Java Applet 可以托管在 Git-Pages 上吗?

Python WWW 宏

python - Django 从 ImageField 下载图像

html - 仅当其父级不是 <pre> 时,我如何设置 <code> 样式?

javascript - 你如何在鼠标悬停时交换 DIV (jQuery)?

jquery - 过多的边框/填充出现在我的 html 底部

syntax - 如何禁用 Markdown 代码块中的 linenums?

python - 如何从包内导入包?

Python 字符串操作

c# - 如何在 MVC3 View 中从 Markdown 文本中突出显示 C# 语法