【问题标题】:Conditional substring in a Jinja2 templateJinja2 模板中的条件子字符串
【发布时间】:2017-06-07 01:26:28
【问题描述】:

使用 ansible 进行部署时,有 1 种特定情况我需要去除尾随 -p 子字符串的字符串。

仅当-p 位于末尾时,字符串somemachine-prod-p 才应变为somemachine-prod

我看到的可以与 Jinja 一起使用的子字符串函数不能满足我的需求,因为我需要去除字符串的结尾,而不是开头。

想法?

【问题讨论】:

    标签: substring ansible jinja2


    【解决方案1】:

    找到了。

    如果有人想知道:

    {% if name.endswith('-p') %}
    {{ name[:-2] }}
    {% else %}
    {{ name }}
    {% endif %}
    

    【讨论】:

    • 我知道这是一篇旧帖子,但我只想说这对今天下午有很大帮助。感谢分享。
    • 无法解析剩余部分:来自“user.username[:-2]”的“[:-2]”。请帮帮我。我的 HTML 是

      {{ user.username[:-2] }}

    • 很高兴添加简单的 Python 字符串函数可以在 jinja 中使用(在您的解决方案中,这不是内置的 jinja 测试)。
    【解决方案2】:

    对于简单的子字符串...

    "{{var_name[start:end]}}"
    

    start 是起始位置(偏移量 0),end 是结束位置(偏移量 1)......看起来!

    这个问题的标题表明只想从变量中获取子字符串。大多数其他搜索结果都有类似的标题,但会给出特定的响应,例如拆分路径等。这适用于像我一样难以找到此类基本内容的人。

    【讨论】:

    • 无法解析剩余部分:来自“user.username[:-2]”的“[:-2]”。请帮帮我。我的 HTML 是

      {{ user.username[:-2] }}

    【解决方案3】:

    有一个更好的“oneliner”:{{ name | regex_replace('-p$','') }}

    【讨论】:

    • 这仅适用于已注册的合适过滤器,因为regex_replace 不是默认过滤器。 ansible 中就是这种情况,它提供了extra filters。如果你愿意,你也可以省略最后一个参数:{{ name | regex_replace('-p$')
    • 对上述评论感到抱歉。我刚刚意识到,这实际上是一个非常具体的问题。我只是通过搜索 jinja2 来到这里的。
    【解决方案4】:

    来自文档 你可以把它包起来

    截断(s, length=255, killwords=False, end='...', leeway=None)

    返回字符串的截断副本。长度由第一个参数指定,默认为 255。如果第二个参数为 true,过滤器将按长度剪切文本。否则它将丢弃最后一个单词。如果文本实际上被截断,它将附加一个省略号(“...”)。如果您想要一个不同于“...”的省略号,您可以使用第三个参数指定它。仅超出第四个参数中给出的容差范围的长度的字符串将不会被截断。

    {{ "foo bar baz qux"|truncate(9) }}

    -> "foo..."
    

    {{ "foo bar baz qux"|truncate(9, True) }}

    -> "foo ba..."
    

    {{ "foo bar baz qux"|truncate(11) }}

    -> "foo bar baz qux"
    

    {{ "foo bar baz qux"|truncate(11, False, '...', 0) }}

    -> "foo bar..."
    

    较新的 Jinja 版本的默认余量为 5,之前为 0,但可以全局重新配置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      • 2021-09-12
      • 2019-02-18
      相关资源
      最近更新 更多