web-dev-qa-db-ja.com

Jinja2テンプレートのサブストリング

Ansibleを使用してデプロイする場合、末尾の-pサブストリングのストリングを削除する必要がある特定のケースが1つあります。

文字列somemachine-prod-pは、somemachine-prodが最後にある場合にのみ-pになります。

Jinjaで使用できるサブストリング関数は、文字列の先頭ではなく末尾を削除する必要があるため、ニーズを満たしていません。

アイデア?

16
Moshe

それを見つけた。

誰かが知りたい場合:

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

より良い「oneliner」があります:{{ name | regex_replace('-p$','') }}

21

単純な部分文字列の場合...

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

ここで、開始は開始位置(オフセット0)で終了は終了位置(オフセット1)です...と思われます!

この質問のタイトルは、変数から部分文字列を取得したいことを示唆しています。そして、他のほとんどの検索結果は同様のタイトルを持っていますが、その後、パスの分割などの特定の応答を提供します。

7
Straff