【发布时间】:2016-05-13 01:05:02
【问题描述】:
play_hosts 是一个播放的所有机器的列表。我想使用这些并使用format() 之类的东西像rabbitmq@%s 一样重写它们,然后将它们与join() 之类的东西结合在一起。所以:
{{ play_hosts|format(???)|join(', ') }}
格式的所有示例都使用管道,其中输入是格式字符串而不是列表。有没有办法使用这些(或其他东西)来完成我想要的?输出应该类似于:
['rabbitmq@server1', 'rabbitmq@server2', rabbitmq@server3', ...]
jinja2 文档描述如下格式:
format(value, *args, **kwargs)
在对象上应用 python 字符串格式:
{{ "%s - %s"|format("Hello?", "Foo!") }}
-> Hello? - Foo!
所以它提供了三种输入,但在示例中没有描述这些输入,它显示了一种在管道中,另外两种通过 args 传入。是否有关键字 arg 来指定通过管道传输的字符串?请帮助,蟒蛇僧侣!
【问题讨论】:
-
这行得通吗? (我从没用过jinja)
{% for host in play_hosts %}{{ "rabbitmq@%s"|format(host) }}{% endfor %} -
似乎只需要一个列表理解。
-
@Barmar 列表组合不受 jinja2 支持