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

循环中使用string format时值始终为首个关键词的问题求助

问题原因及解决方案

问题根源

你的代码里,第一次循环执行params['where'] = params['where'].format(keyword,keyword)后,params['where']中的{}占位符已经被替换成了'A',变成了没有占位符的字符串。后续循环再调用.format()时,因为字符串里没有可替换的占位符,所以结果不会改变,始终输出第一次的内容。

解决方法

保留原始的where子句模板,每次循环都基于模板生成新的字符串,而不是修改原字典中的where值。

方法一:单独存储模板

params = {
    'f': 'json',
    'returnGeometry': 'true',
}
# 单独保存where子句的模板字符串
where_template = "UPPER(ADDRESS) LIKE '%{}%' or UPPER(ADDRESS2) LIKE '%{}%'"

for keyword in ['A','B','C','D','E']:
    # 每次用模板生成新的where子句
    params['where'] = where_template.format(keyword, keyword)
    print(params['where'])

方法二:使用f-string(更直观)

params = {
    'f': 'json',
    'returnGeometry': 'true',
}

for keyword in ['A','B','C','D','E']:
    # 直接用f-string生成对应的where子句
    params['where'] = f"UPPER(ADDRESS) LIKE '%{keyword}%' or UPPER(ADDRESS2) LIKE '%{keyword}%'"
    print(params['where'])

两种方法都能得到你期望的输出:

UPPER(ADDRESS) LIKE '%A%' or UPPER(ADDRESS2) LIKE '%A%'
UPPER(ADDRESS) LIKE '%B%' or UPPER(ADDRESS2) LIKE '%B%'
UPPER(ADDRESS) LIKE '%C%' or UPPER(ADDRESS2) LIKE '%C%'
UPPER(ADDRESS) LIKE '%D%' or UPPER(ADDRESS2) LIKE '%D%'
UPPER(ADDRESS) LIKE '%E%' or UPPER(ADDRESS2) LIKE '%E%'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:57:35