用Python中的字符串替换jinja变量的每个实例

Rom*_*mit 3 python jinja2

我有以下代码使用 Jinja 创建字符串

from jinja2 import Template

jT = Template('"text": {{text}}, "peripherals": {{peripherals}}')
params = {'text': 'some_text', 'peripherals': 'mouse'}
jT.render(**params)
Run Code Online (Sandbox Code Playgroud)

结果输出是:

'"text": some_text, "peripherals": mouse'

有没有办法将替换的值括在引号内,如下所示:

'"text": "hello", "peripherals": "mouse"'

除了编辑现有的 jinja 并使用 {{text|tojson}} 之外,Python 中是否有一种方法/函数可以自动将每个替换值括在引号中?

Rom*_*mit 5

如果 Jinja 包没有内置工具来自动用字符串替换每个变量,那么我认为这将是正确的方法:

import re
from jinja2 import Template

template = '{"text": {{text}}, "peripherals": {{peripherals}}}'
# Use regular expressions to identify the variables
template = re.sub(r"({{)(\w*)(}})", r'"\1\2\3"', template)

jT = Template(template)

params = {'text': 'some_text', 'peripherals': 'mouse'}
print(jT.render(**params))
Run Code Online (Sandbox Code Playgroud)

它只是在模板中搜索变量并将它们封装在引号内。