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

Python format报IndexError: Replacement index 0 out of range

报错原因

第一次调用str.format()时,Python会扫描字符串内所有大括号标记的占位符做匹配替换。当前模板字符串同时包含命名占位符{idnumber}和位置占位符{0},但本次调用仅传入了idnumber=nomor一个关键字参数,未给位置占位符{0}提供对应替换值,直接触发索引越界错误,代码不会执行到第二次format的逻辑。

修复方案

可任选以下一种方式修改代码:

  • 转义二次替换的占位符:第一次format时,把不需要在当前轮次替换的{0}写成{{0}},双大括号会被format解析为普通的单大括号文本,不会被识别为待替换占位符,核心代码修改如下:
import sys
nomor = sys.argv[1]

.....
    # values后的占位符用双大括号包裹,避免第一轮format解析
    query = "insert into {idnumber}_recipe values ({{0}})".format(idnumber = nomor)
    query = query.format(','.join(['%s'] * len(data)))
.....
  • 用f-string一次性完成拼接(Python 3.6及以上版本支持),无需分两次调用format,逻辑更清晰不易出错:
import sys
nomor = sys.argv[1]

.....
    value_placeholder = ','.join(['%s'] * len(data))
    query = f"insert into {nomor}_recipe values ({value_placeholder})"
.....
  • 安全提示:直接把命令行传入的参数拼接到SQL语句中存在SQL注入风险,拼接表名前必须做白名单校验,确认传入的nomor符合表名命名规则,禁止直接透传未校验的外部输入。

更新:提问者已自行找到问题解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.12 16:15:50