【发布时间】:2017-03-30 03:23:06
【问题描述】:
我有 jinja2 模板,它以 'keys : value' 的形式从 yaml 获取数据变量。
问题是当我运行 jinja2 模板时,它会打印具有空“值”的行。
我该怎么做才能不打印空行。否则会显示为None。
例如;
-模板
set first {{ABC}}
set second {{DEF}}
set third {{GHI}}
-yaml 数据
ABC : data1
DEF :
GHI : data3
如果我运行它,它会声明;
set first data1
set second None
set third data3
我不希望这样。我希望它打印出来;
set first data1
set third data3
如何做到这一点?如果变量未定义,则防止添加行。
谢谢,
更新的脚本:-
TEMPLATE_FILE = { 'trial_1': 'trial.tcl' }
for f,s in TEMPLATE_FILE.items():
template = templateEnv.get_template( s )
with open('tmp.yaml', 'rb') as stream:
try:
yaml_input_data = yaml.load(stream)
except yaml.YAMLError as exc:
pass
print(yaml_input_data)
for k, v in yaml_input_data.items():
if v is None:
yaml_input_data.pop(k)
print(yaml_input_data)
with open(f, 'w') as outfile:
outfile.writelines(template.render(yaml_input_data))
print '\nWrote',f
更新 jinja2 模板
{% for k, v in yaml_input_data.iteritems() %}
{# use k, v #}
set first {{ABC}}
set second {{DEF}}
set third {{GHI}}
{% endfor %}
【问题讨论】:
-
您没有使用变量
k和v。这可能会帮助您了解事情是如何工作的 - stackoverflow.com/questions/19141073/… 我建议学习基础知识,python 如何与 Jinja 交互以及 Jinja 如何工作。这是一个使用 Flask 的好例子,但概念可以概括 - realpython.com/blog/python/primer-on-jinja-templating
标签: python python-2.7 yaml jinja2