以下是我初始化jinja2模板的代码段
from jinja2 import Template
templ = Template("{{foo}} to {{bar}}")
我愿意从模板obj中提取模板字符串变量键,如下所示。
templ.keys() == ["foo", "bar"]
是否有任何API可以使其正常工作?我已经搜索了很长一段时间但没有任何工作。
答案 0 :(得分:1)
使用jinja2.meta
你可以:
from jinja2 import Environment, meta
templ_str = "{{foo}} to {{bar}}"
env = Environment()
ast = env.parse(templ_str)
print(meta.find_undeclared_variables(ast)) # {'bar', 'foo'}
返回未声明变量的set
。
您还可以使用re
gex模块在模板字符串中查找变量名称:
from jinja2 import Template
import re
rgx = re.compile('{{(?P<name>[^{}]+)}}')
templ_str = "{{foo}} to {{bar}}"
templ = Template(templ_str)
variable_names = {match.group('name') for match in rgx.finditer(templ_str)}
print(variable_names) # {'foo', 'bar'}
正则表达式(可能更好......)匹配{{
后跟任何不是大括号的内容,直到遇到}}
。