1. ホーム
  2. python

[解決済み] jinjaで文字列をリストに分割する?

2022-02-10 04:35:19

質問

jinja2テンプレートに、';'で区切られた文字列の変数があります。

これらの文字列をコード内で別々に使用する必要があります。 例えば、変数は variable1 = "green;blue" です。

{% list1 = {{ variable1 }}.split(';') %}
The grass is {{ list1[0] }} and the boat is {{ list1[1] }}

テンプレートをレンダリングする前に分割することもできますが、文字列の中に最大10個の文字列が含まれていることがあるので、これは厄介です。

以前、私が行ったjspがありました。

<% String[] list1 = val.get("variable1").split(";");%>    
The grass is <%= list1[0] %> and the boat is <%= list1[1] %>

EDIT

で動作します。

{% set list1 = variable1.split(';') %}
The grass is {{ list1[0] }} and the boat is {{ list1[1] }}

解決方法は?

5年ぶりに自分の質問に戻り、多くの人がこれを有用だと感じているのを見て、少し更新しました。

文字列変数を分割して list は、split 関数を使用することにより(類似の値を含むことができます。 set 割り当て ) . この関数は公式のドキュメントには載っていませんが、通常のPythonと同じように動作します。アイテムはインデックス経由で呼び出したり、ループで使ったり、Daveが提案したように、値がわかっていればタプルのように変数をセットすることができます。

{% set list1 = variable1.split(';') %}
The grass is {{ list1[0] }} and the boat is {{ list1[1] }}

または

{% set list1 = variable1.split(';') %}
{% for item in list1 %}
    <p>{{ item }}<p/>
{% endfor %} 

または

{% set item1, item2 = variable1.split(';') %}
The grass is {{ item1 }} and the boat is {{ item2 }}