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

Python中如何实现嵌套f-string的解析求值?

解决方法

你遇到的问题是因为SourceQuery本身是普通字符串,外层的f-string只会解析字符串字面量内容,不会递归解析里面的占位符。这里有几种简便的实现方式:

方法一:直接定义为f-string

最直接的方式是在定义SourceQuery时就使用f-string,占位符会被直接解析:

SourceSchema = 'myschema'
SourceTable = 'mytable'
SourceQuery = f'SELECT * FROM {SourceSchema}.{SourceTable}'
print(SourceQuery)

执行后输出:

SELECT * FROM myschema.mytable

方法二:使用str.format()方法

如果SourceQuery是预先定义好的普通字符串(比如从配置文件读取),可以用str.format()替换占位符:

SourceSchema = 'myschema'
SourceTable = 'mytable'
SourceQuery = 'SELECT * FROM {SourceSchema}.{SourceTable}'
# 手动传入变量
print(SourceQuery.format(SourceSchema=SourceSchema, SourceTable=SourceTable))
# 或者用**locals()自动传递当前作用域的变量
print(SourceQuery.format(**locals()))

两种方式都能得到你需要的输出。

方法三:嵌套f-string(不推荐,有安全风险)

如果必须用外层f-string的方式,可以通过eval实现,但仅当字符串完全可控时使用,避免注入风险:

SourceSchema = 'myschema'
SourceTable = 'mytable'
SourceQuery = 'SELECT * FROM {SourceSchema}.{SourceTable}'
print(eval(f"f'{SourceQuery}'"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:12:05