You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YAML字典引号转义问题:Jinja模板调用报错求助

解决Jinja模板中字符串特殊字符转义问题

问题根源

test2服务的message字段包含单引号,直接通过{{ }}输出时,手动用反斜杠转义无效是因为Jinja会自动解析转义字符,单反斜杠会被过滤,进而导致生成的代码出现语法错误。

最优解决方案:使用tojson过滤器

Jinja的tojson过滤器会自动将字符串转换为合法的JSON格式,自动处理所有特殊字符的转义(包括单引号、双引号、换行符等),无需手动干预。修改后的模板代码如下:

skip_list = [
{% for item in messages_to_skip %}
[{{ item['service'] | tojson }}, {{ item['message'] | tojson }}] {% if not loop.last %}, {% endif %}
{% endfor %}
]

说明:

  1. 将赋值变量名改为skip_list,避免和遍历的原列表名messages_to_skip冲突,减少潜在问题。
  2. tojson会自动为字符串添加双引号,并转义内部特殊字符,生成的代码语法完全合法。

备选方案:手动替换转义

如果仅需处理单引号场景,可使用replace过滤器,但要注意Jinja中反斜杠需要双重转义(Jinja会解析单个反斜杠为转义符):

messages_to_skip = [
{% for message_to_skip in messages_to_skip %}
["{{ message_to_skip['service'] }}", "{{ message_to_skip['message'] | replace("'", "\\'") }}"] {% if not loop.last %}, {% endif %}
{% endfor %}
]

该方法仅针对单引号处理,通用性不如tojson。

内容的提问来源于stack exchange,提问作者Mak S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 02:27:45