在ipython/jupyter notebooks支持Jinja2和Yaml
jinja-yaml-magic的Python项目详细描述
Jupyter的Jinja2和Yaml
请看the full HTML version。
这个文件的其余部分只是标记中的nbconvert
;很难读取。见the HTML version。
人们一起使用yaml和jinja2;它们是ansible的核心。有时候你需要一个游乐场来了解它们是如何工作的。这个魔法提供了两者。
输入:
%load_extjinja_yaml_magic%reload_extjinja_yaml_magic
(忽略%load_ext
/%reload_ext
的警告。)
山药
%%yaml variable
将细胞中的yaml解析为名为variable的变量。
如果省略variable
,yaml将被解析为变量jinja_env
;它还
然后通过历史机制:Out[3]
或_3
。
输入:
%%yamlnames:-Jay-Chris-Pat
输出:
{'names': ['Jay', 'Chris', 'Pat']}
输入:
%%jinja{{names}}
输出:
['Jay', 'Chris', 'Pat']
Jinja2
如果您只想试用一个快速模板,请在单元格顶部编写%%jinja
。jinja_env
和笔记本变量的内容都可用。下面,我们使用上面的%%yaml
中的names
,以及笔记本中的separator
。
输入:
separator=", "
输入:
%%jinja{{names|sort|join(separator)}}
输出:
Chris, Jay, Pat
命名模板
您可能希望将jinja2代码存储为模板。
- 您可以稍后在笔记本中重复使用模板;
- 您可以使用jinja2强大的
extends
、import
和include
机制。
下面的模板名为fancy_names
。当前目录中的文件也可用作模板。
输入:
%%jinja_templatefancy_names{%fornameinnames%}<b>{{name}}</b><br>{%-endfor%}
输入:
%jinja--templatefancy_names
输出:
<b>Jay</b><br>
<b>Chris</b><br>
<b>Pat</b><br>
格式化
默认情况下,运行%jinja
模板的结果格式化为“漂亮”文本。
您可以选择其他格式。
Type | ...displays as |
---|---|
^{ | A string, without quotes |
^{ | Python string literal |
^{ | HTML |
^{ | SVG |
^{ | LaTeX |
^{ | Markdown |
^{ | Syntax-highlighted code |
--latex
需要加载mathjax;默认情况下是这样。--code
需要
最新版本的ipython。
输入:
%jinja--templatefancy_names--html
输出:
杰伊
克里斯
拍拍
svg示例
来自https://medium.com/@heyoka/scratch-made-svg-donut-pie-charts-in-html5-2c587e935d72。此模板进行数学运算,因此您可能不希望遵循其示例。
输入:
# Percent of circle to be filledfull=60# Percent distance from top to startoffset=12.5
输入:
%%jinja_templatesvg_example<svgwidth="25%"height="25%"viewBox="0 0 42 42"class="donut"><circleclass="donut-hole"cx="21"cy="21"r="15.91549430918954"fill="#fff"></circle><circleclass="donut-ring"cx="21"cy="21"r="15.91549430918954"fill="transparent"stroke="#d2d3d4"stroke-width="3"></circle><circleclass="donut-segment"cx="21"cy="21"r="15.91549430918954"fill="transparent"stroke="#ce4b99"stroke-width="3"stroke-dasharray="{{ full }} {{ 100-full }}"stroke-dashoffset="{{ 25 - offset }}"></circle></svg>
输入:
%jinja--templatesvg_example--svg
(实际笔记本中有一个svg图像。)