系列文
python-docx-template包之----为文字自定义格式(一)
python-docx-template包之----设置表格(二)
python-docx-template包之----疑难杂症(三)
概述
除了对表格以及文字的处理外,在使用docxtpl包时总会遇到各种各样的问题,下面总结一下我遇到的问题以及解决方案。
需求
1. 消除jinja2 标签占据的空白(包括换行等)
2. jinja2 if 条件
实现一:消除jinja2标签占据的空白
经常会发现,在制作模板时,有时候标签会占据一行,这样生成的Word也会相应的多出一行,例如
1. 模板
Title
{% for i in data %}
{{ i[1] }}. {{ i[0] }}
{% endfor %}
结果:
Title
1. A
2. B
3. C
每一行数据下会多出一行
2. 解决办法
尝试过jinja2的方法,即在%之前或之后添加“-”, 此方式失败
{% for i in data -%}
{{ i[1] }}. {{ i[0] }}
{%- endfor %}
真正的解决办法:
try {%p 替代 {%, 完美解决
Title
{%p for i in data %}
{{ i[1] }}. {{ i[0] }}
{%p endfor %}
实现二:jinja2 if条件
在模板中,使用if条件判断,例如 {%if status =='1' %}时,生成Word的时候总会报错
后来发现,当在Word模板中输入引号时,Word会自动输入倾斜的引号,这个会导致错误,将引号替换