gpt4 book ai didi

jinja2 - 如何附加到字符串列表中的每个项目?

转载 作者:行者123 更新时间:2023-12-04 12:46:50 46 4
gpt4 key购买 nike

我有一个包含 IP 地址的字符串列表。我想为每个端口附加一个端口号。在 python 中,我会这样做:

ip_list = [(ip + ":" + port) for ip in ip_list]

...但 Jinja 不支持列表推导式。目前,我正在通过一次构建一个新列表来解决问题:
{%- set ip_list = magic() %}
{%- set new_ip_list = [] %}
{%- for ip in ip_list %}
{%- do new_ip_list.append(ip + ":" + port) %}
{%- endfor %}

这在模板中间既丑陋又令人恼火,感觉应该有更好的方法来完成工作。最好是单层。

虽然我知道这可以通过自定义过滤器来完成,但我正在为我没有编写的软件 (saltstack) 提供模板,所以它们(据我所知)对我来说是不可用的。

最佳答案

regex_replace可以做到这一点。可在 ansible 购买和 saltstack :

magic() | map('regex_replace', '$', ':'~port) | list
  • map :申请regex_replace过滤到每个列表元素(如 listElement | regex_replace('$', ':'~port) )
  • 替换:用 : 替换字符串的结尾和端口(所以附加它)
  • 列表:将生成器转换为列表

  • 使用正则表达式是矫枉过正,但我​​的其他尝试更是如此。不幸的是 regex_replace does not exist in normal jinja .

    关于jinja2 - 如何附加到字符串列表中的每个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33616695/

    46 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com