ipython-notebook - 在 ipython-notebook 的 Markdown 单元格中展开变量

标签 ipython-notebook

在 ipython 笔记本中的 Markdown 单元格内,我希望能够自动扩展变量。这能做到吗?

例如,考虑以下代码

from IPython.core.display import HTML
from markdown import markdown

base_url = "https://stackoverflow.com/"
markdown_string = "Two categories at [stackoverflow]({0}) are "\
                  "[ipython-notebook]({0}questions/tagged/ipython-notebook) and "\
                  "[matplotlib]({0}questions/tagged/matplotlib).".format(base_url)
HTML("<p>{}</p>".format(markdown(markdown_string)))

这会生成链接正确的输出单元格,所有这些都与 base_url 有关。 , 作为

Two categories at stackoverflow are ipython-notebook and matplotlib.



我想要的是能够直接在单元格中输入 Markdown ,引用一个预定义的变量。这可能吗?

最佳答案

虽然目前还不可能使用真正的 Markdown 单元格,但您可以轻松创建一个魔法来获得相同的效果。

from __future__ import absolute_import
from IPython.core.getipython import get_ipython
from IPython.core.magic import (Magics, magics_class,  cell_magic)

@magics_class
class MarkdownMagics(Magics):

    @cell_magic
    def markdown(self, line, cell):
        from IPython.core.display import HTML
        from markdown import markdown

        vars = line.split()

        d = {}
        for k, v in self.shell.user_ns.items():
            if k in vars:
                d[k] = v

        return HTML("<p>{}</p>".format(markdown(cell.format(**d))))

get_ipython().register_magics(MarkdownMagics)

设置一些变量

foo = 1
bar = 2

然后调用魔法,参数是你想从命名空间中获取的变量。
%%markdown foo bar

Substitute _{foo}_ and *{bar}*

关于ipython-notebook - 在 ipython-notebook 的 Markdown 单元格中展开变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21364102/

相关文章:

python - Python 中的科学报告

python - 来自 python worker :/bin/python: No module named pyspark 的错误

python - Ipython 笔记本 : Elegant way of turning off part of cells?

ipython-notebook - 恢复已删除的 ipython/jupyter 笔记本?

python - 为什么我的 Bokeh 图在 github 上不起作用?

parallel-processing - IPython Jupyter 中的 Julia 并行计算

python - 如何从 Python 脚本管理多个 IPython/Jupyter 内核并与之通信?

python - 如何在本地安装 ipython notebook?

python - 与 IPython 魔法函数调用 %matplotlib inline 等价的纯 Python 是什么?

Groovy Notebook 相当于 IPython Notebook