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

Python生成C代码时打印含大括号字符串引发KeyError的解决方法

解决Python生成C代码时的大括号转义问题

嘿,这个问题我太熟啦!你遇到的KeyError完全是因为Python的字符串格式化机制在搞鬼——str.format()会把单个的{}识别成需要替换的占位符,但你那些包裹.data1、.data2的大括号是要原样输出到C代码里的,所以得给它们做个“标记”,告诉格式化函数别把它们当成占位符处理。

核心解决思路:用双大括号转义

要让format()保留单个大括号,只需要把你想原样输出的{写成{{,}写成}}就行,真正用来替换变量的占位符还是用单个{}。

修正后的函数示例

方式1:位置参数格式化

def funky(data1, data2):
    return """{{ .data1="{0}", .data2="{1}", }},""".format(data1, data2)

方式2:命名参数格式化(更易读)

如果参数多的话,用命名占位符会更清晰,不容易搞混顺序:

def funky(data1, data2):
    return """{{ .data1="{data_val1}", .data2="{data_val2}", }},""".format(
        data_val1=data1, 
        data_val2=data2
    )

方式3:Python 3.6+ 用f-string(更简洁)

要是你的Python版本够新,用f-string会更直观,转义规则一样,双大括号保留原样:

def funky(data1, data2):
    return f'{{ .data1="{data1}", .data2="{data2}", }},'

现在调用funky("egg","dog"),就会完美返回你想要的结果:{ .data1="egg", .data2="dog", },

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:07:35