在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

如果您只想试用一个快速模板,请在单元格顶部编写%%jinjajinja_env和笔记本变量的内容都可用。下面,我们使用上面的%%yaml中的names,以及笔记本中的separator

输入:

separator=", "

输入:

%%jinja{{names|sort|join(separator)}}

输出:

Chris, Jay, Pat

命名模板

您可能希望将jinja2代码存储为模板。

  • 您可以稍后在笔记本中重复使用模板;
  • 您可以使用jinja2强大的extendsimportinclude机制。

下面的模板名为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图像。)

svg

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
解释java选择方法   连接到127.0.0.1的java间歇性故障,连接到IP(eth0)时没有故障   java如何优雅地杀死hadoop作业/intercept`hadoop作业杀死`   java如何通过引导类加载器以编程方式加载另一个类?   url Java:在查询参数之前使用片段构建URI   在BroadLeaf表blc_order_属性中保存OrderAttributes值时发生java错误   安卓将功能从xml转换为java   java如何将数据写入文件?   java JPA SQL结果映射   Java中整数对象比较运算符的引用安全性   Spring测试失败:java。lang.NoClassDefFoundError:org/springframework/cglib/transform/impl/memorysafuendecaredthrowableStrategy   rich:extendedDataTable中的java行选择和数据处理   java为什么我需要在volatile上对多个线程使用synchronized?   java尽管构建成功,但为什么会出现此错误?   数组$ArrayList不能转换为java。util。java中的ArrayList   java如何根据泛型类型调用方法?   java将JLabel添加到JPanel,将JPanel添加到JFrame   如果MapStruct中的源为null,则java将父目标设置为null   JavaJBossDrools从DRL插入事实   java不同的JRE安装(windows)