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

Python嵌套F-string引用问题:动态生成DataFrame行描述

问题分析与解决方案

问题根源

你这么写的核心问题是:attempt是提前拼接好的静态字符串,里面的{df[i][j]}只是普通字符,外层的F-string不会去解析这个字符串变量里的占位符。F-string的表达式解析是在定义时完成的,当你把attempt放进外层F-string时,它只会直接输出attempt的字面内容,不会再识别里面的大括号表达式。

正确实现方式

方式一:遍历行时动态拼接列值(推荐)

直接在每行的循环里,根据列名列表获取对应值再拼接,逻辑清晰且安全:

list_a = ['a', 'b', 'c']
desc = "\n".join(
    [
        f"- {' | '.join(df.iloc[i][col] for col in list_a)} | plus some additional text here"
        for i in df[0:3].index
    ]
)

方式二:用format方法结合字典解包

先构建带列名占位符的模板,再把每行数据转成字典传入format:

list_a = ['a', 'b', 'c']
# 生成"{a} | {b} | {c} | plus some additional text here"格式的模板
template = ' | '.join(f"{{{col}}}" for col in list_a) + " | plus some additional text here"
desc = "\n".join(
    [
        f"- {template.format(**df.iloc[i].to_dict())}"
        for i in df[0:3].index
    ]
)

方式三:模板字符串+eval(不推荐)

如果一定要用预定义模板的思路,可以用eval求值,但要注意安全风险(仅适用于完全可控的输入场景):

list_a = ['a', 'b', 'c']
# 生成"df.iloc[i]['a'] | df.iloc[i]['b'] | df.iloc[i]['c']"格式的模板字符串
template = ' | '.join(f"df.iloc[i]['{col}']" for col in list_a)
desc = "\n".join(
    [
        f"- {eval(template)} | plus some additional text here"
        for i in df[0:3].index
    ]
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:42:51