python-docx-template包之----疑難雜症(三)
阿新 • • 發佈:2018-12-14
概述
除了對錶格以及文字的處理外,在使用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會自動輸入傾斜的引號,這個會導致錯誤,將引號替換