在ipython-notebook中的标记单元格中,我希望能够自动扩展变量。可以做到吗?
为例,请考虑以下代码
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
相对于
Stackoverflow的两个类别是Ipython Notebook和Matplotlib。
我想要的是能够将降价直接输入单元格中,引用预定义的变量。这可能吗?
尽管无法使用真实的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}*
如@jakob在评论中的回答,最简单的方法是安装python-markdown ipython笔记本电脑扩展,如Wiki页面上所述。
。然后,您可以通过卷曲括号来访问Markdown中的变量:
python单元格:
x = 1000
降压单元格:
Insert variable contents here -> {{x}}.
降价单元被解析为:
Insert variable contents here -> 1000.