1. 程式人生 > >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會自動輸入傾斜的引號,這個會導致錯誤,將引號替換