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

Python exec函数执行含引号的赋值字符串触发SyntaxError如何解决

问题根源

你遇到的语法错误是因为待赋值的字符串内部包含双引号,手动拼接执行语句时,这些内部双引号会提前闭合包裹字符串的外层双引号,破坏Python语法规则。手动替换引号、加三重引号的方案不可靠,因为待赋值内容可能包含任意特殊字符(单引号、反斜杠、换行符等),手动处理很容易遗漏。

最优解决方案

完全放弃使用exec拼接字符串的实现方式,直接通过遍历嵌套字典赋值,这是最安全也最不容易出问题的方案:

  1. 先实现一个通用的嵌套字典赋值函数
def set_nested_value(nested_dict, key_path, value):
    current = nested_dict
    # 逐层遍历到目标节点的父级
    for key in key_path[:-1]:
        current = current[key]
    # 给目标节点赋值
    current[key_path[-1]] = value
  1. 替换原有循环逻辑
for index, row in md_csv.iterrows():
    target_path = row['Path']
    assign_value = str(translated_csv.iloc[index][1])
    set_nested_value(jo, target_path, assign_value)

这种方案完全不需要处理任何引号转义问题,Python会自动处理字符串的所有特殊字符。

兼容exec的替代方案

如果因特殊场景必须使用exec实现,不要手动拼接值的部分,用Python内置的repr()函数把待赋值的内容转成合法的Python字符串字面量,它会自动处理所有转义、引号包裹的逻辑:
把你原来拼接my_string的代码行替换为:

my_string = f"jo{json_ref_string} = {repr(str(translated_csv.iloc[index][1]))}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:09:02