web-dev-qa-db-fra.com

Sous-chaîne dans un modèle Jinja2

Lors du déploiement avec ansible, il y a 1 cas spécifique où je dois supprimer une chaîne d'un _ -p sous-chaîne.

La chaîne somemachine-prod-p devrait devenir somemachine-prod uniquement si le -p est à la fin.

La fonction de sous-chaîne que j'ai vu que je peux utiliser avec Jinja ne répond pas à mes besoins car j'ai besoin de supprimer la fin de la chaîne, pas le début.

Des idées?

16
Moshe

Je l'ai trouvé.

Si quelqu'un veut savoir:

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

Il existe un "oneliner" plus agréable: {{ name | regex_replace('-p$','') }}.

21
Konstantin Suvorov

Pour une sous-chaîne simple ...

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

où le début est la position de départ (décalage 0) et la fin est la position de fin (décalage 1) ... il semble!

Le titre de cette question suggère simplement de vouloir obtenir une sous-chaîne à partir d'une variable. Et la plupart des autres résultats de recherche ont des titres similaires mais donnent ensuite une réponse spécifique comme séparer les chemins, etc. C'est pour ceux d'entre vous qui, comme moi, ont eu du mal à trouver une chose aussi basique.

7
Straff