Jinja2用白色空格分割字符串

时间:2013-12-19 09:39:14

标签: string split jinja2

我正在使用Jinja2模板引擎(+鹈鹕)。

我有一个字符串说“1”,我正在寻找一种方法将该字符串分成两部分 通过使用空格作为分隔符。

所以我正在寻找的最终结果是一个变量,它以数组的形式保存这两个值。例如str [0]评估为“a”& str [1]评估为“1”。

提前致谢。

6 个答案:

答案 0 :(得分:24)

在字符串上调用split应该可以解决问题:

"a 1".split()

答案 1 :(得分:15)

我遇到了同样的问题,并没有找到任何有用的内容,所以我刚创建了一个自定义过滤器:

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 %}

答案 2 :(得分:2)

我的解决方案在iPython中进行了测试

In [1]: from jinja2 import Template
In [2]: Template("{{s.split('-')}}").render(s='a-bad-string')
Out[2]: u"['a', 'bad', 'string']"

答案 3 :(得分:1)

我制作了一个与Loïc的答案相同的插件,但它可以选择指定一个分隔符。 https://github.com/timraasveld/ansible-string-split-filter

它允许您输入:

# my_variable = 'a 1`
{ my_variable | split | join(' and ') } #=> a and 1

答案 4 :(得分:0)

我建议使用类似的东西:

str = "a 1 b 2 c 3"
val = atr.split()

另外,如果你想指出一个特定的位置,你可以使用类似的东西:

val1 = atr.split()[2]

这将在val1中设置第二个值。

答案 5 :(得分:0)

您也可以使用装饰器执行此操作:

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()