我使用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