如何在Jinja2模板中将字符串转为字典?已掌握字符串转列表方法
在Jinja2中将字符串转换为字典
假设你的字符串是键值对用冒号分隔、整体用逗号分隔的格式(比如"name:Alice,age:30,city:NewYork"),可以通过嵌套拆分和字典内置方法实现转换:
{% set target_str = "name:Alice,age:30,city:NewYork" %} {% set result_dict = {} %} {% for item in target_str.split(',') %} {% set key_value = item.split(':') %} {% set _ = result_dict.__setitem__(key_value[0], key_value[1]) %} {% endfor %}
代码说明:
- 先用
split(',')把原字符串拆成单个键值对的列表,比如得到["name:Alice", "age:30", "city:NewYork"] - 遍历每个键值对,再用
split(':')拆成键和值的二元列表,比如["name", "Alice"] - 借助
__setitem__方法给空字典添加键值对(Jinja2不支持直接用dict[key] = value的赋值写法)
如果你的字符串是标准JSON格式(比如'{"name":"Alice","age":30}'),可以直接用Jinja2的fromjson过滤器:
{% set json_str = '{"name":"Alice","age":30}' %} {% set result_dict = json_str|fromjson %}
优化提示:
如果字符串里可能存在空格(比如"name : Alice , age:30"),可以给键和值加上strip()处理多余空格,同时加判断避免拆分失败:
{% for item in target_str.split(',') %} {% if ':' in item %} {% set key_value = item.split(':') %} {% set _ = result_dict.__setitem__(key_value[0].strip(), key_value[1].strip()) %} {% endif %} {% endfor %}
内容的提问来源于stack exchange,提问作者Roberto Esparis
相关产品推荐
相关产品推荐

