我使用Jinja2模板引擎(+ pelican)。Jinja2由空格分割字符串
我有一個字符串說「1」,而我正在尋找一種方式使用空格作爲分隔符拆分該字符串兩個 。
因此,我期待的最終結果是一個變量,它以數組的形式保存這兩個值。例如str [0]評估爲「a」& str [1]評估爲「1」。
在此先感謝。
我使用Jinja2模板引擎(+ pelican)。Jinja2由空格分割字符串
我有一個字符串說「1」,而我正在尋找一種方式使用空格作爲分隔符拆分該字符串兩個 。
因此,我期待的最終結果是一個變量,它以數組的形式保存這兩個值。例如str [0]評估爲「a」& str [1]評估爲「1」。
在此先感謝。
我有同樣的問題,並沒有發現任何有用的東西,所以我剛剛創建自定義過濾器:
def split_space(string):
return string.strip().split()
添加它到過濾器列表(帶瓶):
app = Flask(__name__)
def split_space(string):
return string.strip().split()
#some code here
if __name__ == '__main__':
app.jinja_env.filters['split_space'] = split_space
app.run()
並在模板中使用它:
{% if "string" in element|split_space %} ... {% endif %}
呼籲字符串分割應該做的伎倆:
"a 1".split()
我的解決辦法是在IPython的測試
In [1]: from jinja2 import Template
In [2]: Template("{{s.split('-')}}").render(s='a-bad-string')
Out[2]: u"['a', 'bad', 'string']"
我會建議使用這樣的:
str = "a 1 b 2 c 3"
val = atr.split()
另外,如果你想點的特定位置,那麼你可以使用的東西例如:
val1 = atr.split()[2]
這將在val1中獲得第二個值。
我做了一個和Loïc的答案一樣的插件,但它可以選擇指定一個分隔符。 https://github.com/timraasveld/ansible-string-split-filter
它可以讓你鍵入:
# my_variable = 'a 1`
{ my_variable | split | join(' and ') } #=> a and 1
你也可以用裝飾做到這一點:
from flask import Flask
app = Flask(__name__)
@app.template_filter('split_space')
def split_space_filter(s):
return s.strip().split()
if __name__ == '__main__':
app.run()
@盧瓦克我想我已經使用Ansible類似的東西,它使用的Jinja2。所以也許它取決於?我對此不太確定。 –
只需確認{allowed for host_split()%}中的主機名即可正常工作。所以我假設你也可以做{%set hostnames = allowed_hosts.split()%},但沒有測試過後者。 –
@ MichaelNelson的後一種方法也適用。 (%) {%set route_name = instance.split('') endof%}' – naoko