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

Python如何编写lambda f-string实现JSON字符串内指定文本动态替换?

解决方案

错误原因

  • 第一种f-string报错:JSON结构中的{、}在f-string中会被默认识别为表达式插入的边界,你未对JSON字面量大括号做转义,导致f-string误判存在多层嵌套的表达式,触发SyntaxError: expressions nested too deeply。
  • 第二种format报错:str.format()同样会将单个{识别为占位符起始标记,未转义的JSON大括号会被误判为命名占位符,因此触发KeyError: ' "type"'。

可行实现

方案1:转义大括号后使用f-string(简单场景可用)

将所有JSON字面量大括号改为双大括号{{/}}做转义,仅保留变量插入位置的单大括号即可:

body = lambda x: f'''[{{ "type": "paragraph", "children": [ {{ "text": "{x}" }} ] }}]'''

注意:该方案传入的字符串如果包含双引号,会导致生成的JSON格式非法,仅适用于明确入参无特殊字符的场景

方案2:转义大括号后使用str.format

逻辑和方案1一致,转义所有JSON字面量大括号即可:

content = '[{{ "type": "paragraph", "children": [ {{ "text": "{x}" }} ] }}]'
body = lambda x: content.format(x=x)

存在和方案1相同的特殊字符风险

方案3:使用json模块序列化(推荐)

直接构造Python字典结构,通过json.dumps序列化生成JSON字符串,工具会自动处理所有转义逻辑,生成的永远是合法JSON:

import json
body = lambda x: json.dumps([{"type": "paragraph", "children": [{"text": x}]}])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:57:00