在Jinja2迭代中获得倒数第二个元素

时间:2017-02-08 21:25:38

标签: python python-3.x jinja2

lst为蔬菜List,表示为字符串:["cucumbers", "peppers", "tomatoes", "carrots"]。我希望用逗号加入这些,除了我希望最后一个是and这个词(为了本练习的目的,我们假设对牛津逗号有一定程度的容忍度),以获得以下内容:

cucumbers, peppers, tomatoes, and carrots

我如何在Jinja2中完成此操作?我知道loop.last让我识别最后一次,但不是倒数第二次迭代,这是相关的。

3 个答案:

答案 0 :(得分:1)

{% if loop.revindex == 2 %}

或者

{% if loop.revindex0 == 1 %}

请参阅List of Control Structures章节中的for循环变量。

答案 1 :(得分:0)

我这样做了牛津逗号:

{% for label in post.labels %}
    <li><a href="/labels/{{label}}">{{label}}</a>
    {% if not loop.last and loop.length > 2%}, {%endif%}
    {% if loop.revindex0 == 1 %} and{%endif%}</li>
{% endfor %}

答案 2 :(得分:0)

对于那些不想使用牛津逗号的人,我使用了它:

{% for name in my_list %}
  {{ name }}
  {%- if loop.length > 1 and not loop.last -%}
    {%- if loop.revindex0 == 1 %} and {% else %}, {% endif %}
  {% endif %}
{% endfor %}

输出类似:

cucumbers, peppers, tomatoes and carrots