在IPython-记事本中的标记单元格中,我希望能够自动展开变量。这能办到吗?
作为一个示例,请考虑以下代码
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,如
堆栈过流的两个类别是ipython-笔记本和matplotlib。
我想要的是能够直接在单元格中键入标记,引用一个预定义的变量。这个是可能的吗?
发布于 2014-08-22 05:38:32
虽然现在还不可能使用真正的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}*https://stackoverflow.com/questions/21364102
复制相似问题