我只想遍历现有列表并从中制作一个逗号分隔的字符串。
像这样的东西:my_string = 'stuff, stuff, stuff, stuff'
我已经知道了loop.last
,我只需要知道如何使下面代码中的第三行工作。
{% set my_string = '' %}
{% for stuff in stuffs %}
{% set my_string = my_string + stuff + ', '%}
{% endfor%}
+
如果您知道所有值都是字符串,则可以使用。Jinja 还提供了~
运算符,它将确保所有值首先转换为字符串。
{% set my_string = my_string ~ stuff ~ ', '%}
我的不好,在试图简化它时,我走得太远了,实际上stuffs
是各种信息的记录,我只是想要其中的id。
stuffs = [[123, first, last], [456, first, last]]
我想my_sting
成为
my_sting = '123, 456'
我的原始代码应该是这样的:
{% set my_string = '' %}
{% for stuff in stuffs %}
{% set my_string = my_string + stuff.id + ', '%}
{% endfor%}
仔细想想,stuffs
可能是一本字典,但你明白了要点。
是的,我找到了join
过滤器,并打算这样处理它:
{% set my_string = [] %}
{% for stuff in stuffs %}
{% do my_string.append(stuff.id) %}
{% endfor%}
{% my_string|join(', ') %}
但是如果不导入扩展来执行附加操作,则附加功能不起作用,并且阅读该文档让我很头疼。它没有明确说明从哪里导入它,甚至没有说明你将在哪里放置 import 语句,所以我认为找到一种连接方法将是两个弊端中较小的一个。
如果您不能只使用过滤器连接,而是需要对数组的条目执行一些操作:
{% for entry in array %}
User {{ entry.attribute1 }} has id {{ entry.attribute2 }}
{% if not loop.last %}, {% endif %}
{% endfor %}
只是另一个黑客可以是这样的。
我有需要连接的字符串数组。所以我将该数组添加到字典中,然后在 for 循环中使用它。
{% set dict1 = {'e':''} %}
{% for i in list1 %}
{% if dict1.update({'e':dict1.e+":"+i+"/"+i}) %} {% endif %}
{% endfor %}
{% set layer_string = dict1['e'] %}