Word模板中的语法(Jinja2)

Word模板中的语法

Word的基本语法(与jinja2相似)

基本语法

  • 变量取值 {{ }}
  • 条件控制{% %}
  • 注释{# #}

过滤器

  • title: 把值中每个单词的首字母都转换成大写
  • trim: 把值的首尾空格去掉
  • join: 拼接多个值为字符串
  • round: 默认对数字进行四舍五入,也可以用参数进行控制
  • capitialize: 把值的首字母转换成大写,其他子母转换为小写
  • lower: 把值转换成小写形式
  • upper: 把值转换成大写形式
    {{ 'abc' | captialize}}
    # Abc

    {{ 'abc' | upper  }}
    # ABC
 
    {{ 'hello world' | title  }}
    # Hello World
    
    {{ "hello world" | replace('world','daxin') | upper }}
    # HELLO DAXIN

  • 变量可以通过“过滤器”进行修改,过滤器可以理解为内置函数和字符串处理函数

for循环

  • 举例如下
    # 迭代数组
    {% for item in [1,2,3] %}
        逻辑循环
        {{ item }}
    {% endfor %}
    
    # 1 2 3
    
    # 迭代字典
    {% for key, value in my_dict.iteritems() %}
        {{ key }}
        {{ value}}
    {% endfor %}
    
    变量 内容
    loop.index 循环迭代计数(从1开始)
    loop.index0 循环迭代计数(从0开始)
    loop.revindex 循环迭代倒序计数(从len开始,到1结束)
    loop.revindex0 循环迭代倒序计数(从len-1开始,到0结束)
    loop.first 是否为循环的第一个元素
    loop.last 是否为循环的最后一个元素
    loop.length 循环序列中元素的个数
    loop.cycle 在给定的序列中轮循,如上例在”odd”和”even”两个值间轮循
    loop.depth 当前循环在递归中的层级(从1开始)
    loop.depth0 当前循环在递归中的层级(从0开始)

    if 条件

  • 举例如下
    {% if ... %}
        逻辑1
    {% elif ... %}
        逻辑2
    {% else %}
        逻辑3
    {% endif %}
    
    

比较运算符

  • 举例
    运算符 含义
    == 等于
    != 不等于
    < 小于
    > 大于
    <= 小于等于
    >= 大于等于

布尔运算符

  • 举例
    运算符 含义
    and
    or
    not

表格

  • for循环中垂直合并单元格 {% vm %}
  • for循环中水平合并单元格 {% hm %}

扩展

  • 为了管理段落、表行、表列、run,必须使用特殊的语法。(区别于jinja2)
  • {%p jinja2_tag %} for paragraphs
  • {%tr jinja2_tag %} for table rows
  • {%tc jinja2_tag %} for table columns
  • {%r jinja2_tag %} for runs
  • 不要使用2次{%p、 {%tr、{%tc 、{%r在同一段落中,行、列或run
  • 不要使用这个 {%p if display_paragraph %}Here is my paragraph {%p endif %}
  • 手动剥离模板中的空白,在块(比如一个 for 标签、一段注释或变 量表达式)的开始或结束放置一个减号( - )
    {% for item in seq -%}
        {{ item }}
    {%- endfor %}
    

具体语法详见jinja2关方文档

上一篇:『Python基础』第4节:基础数据类型初识


下一篇:冒泡排序、选择排序、快速排序、插入排序