在Jupyter Notebook Markdown单元Python中打印变量

nil*_*sal 9 python jupyter-notebook

我可以在Markdown Cell Jupyter Notebook中打印变量的值吗?

试过的代码:

value = 5.3

Markdown cell --> Value is {{ value }} 
Run Code Online (Sandbox Code Playgroud)

我希望Markdown单元格应显示变量的值

屏幕截图

代码截图

nil*_*sal 13

所以在浏览了所有链接之后,我可以通过参考nbextension jupyter notebook文档来解决问题:https : //github.com/ipython-contrib/jupyter_contrib_nbextensions

采取的步骤:

  1. pip安装jupyter_contrib_nbextensions
  2. jupyter contrib nbextension安装--user
  3. jupyter nbextension启用python-markdown / main

在上述命令启动jupyter笔记本并在markdown单元格中打印变量的值后,它的工作原理就像是魅力!

您只需要 在降价单元格中使用{{ac_score}}

屏幕截图

在此处输入图片说明

谢谢!

  • 我们如何在 JupyterLab 中实现同样的目标? (4认同)

mc5*_*c51 8

@nilansh bansal的答案非常适合Jupyter Notebooks。不幸的是,它对JupyterLab不起作用,因为不再支持该插件(所有nbextension插件都是这种情况)。自JupyterLab受到欢迎以来,我想补充到目前为止的答案,因为它花了我很多时间才能找到解决方案。这是因为到目前为止,还没有与JupyterLab兼容的插件。通过将这个这个 SO答案结合起来,我为自己找到了以下解决方案:

from IPython.display import Markdown as md
# Instead of setting the cell to Markdown, create Markdown from withnin a code cell!
# We can just use python variable replacement syntax to make the text dynamic
n = 10
md("The data consists of {} observations. Bla, Bla, ....".format(n))
Run Code Online (Sandbox Code Playgroud)

另外,也可以按照@Igor Forbia对于Python> 3.6的建议简化最后一行:

md(f"The data consists of {n} observations. Bla, Bla, ....")
Run Code Online (Sandbox Code Playgroud)

这导致所需的输出。但是,它具有一个巨大的缺点,即在导出NB时代码单元仍然可见。这可以解决:

  1. 在代码单元格中添加标签,即将其命名为“隐藏”
  2. 配置nbconvert忽略标记的单元格,例如通过将其添加c.TagRemovePreprocessor.remove_input_tags = {"hide"}~/.jupyter/jupyter_notebook_config.py配置文件中

我写了一篇详细的博客文章,内容涉及我如何实现此解决方案以在博客上发布笔记本。例如,您可以jupyterlab-celltags为JupyterLab 安装插件以简化单元格标记。

  • f字符串表示法也起作用:`md(f“数据由{n}个观测值组成。Bla,Bla等...”) (2认同)