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

如何重写自定义循环以避免Python str.format()触发i+1相关键错误

问题原因

str.format()语法不支持在占位符{}内部直接执行算术运算,你代码里的{i+1}会被识别为需要传入名为i+1的参数,而不是计算i+1的值,所以才会触发KeyError。

最优重写方案

推荐用Python 3.6及以上支持的f-string语法,既可以直接在占位符内做算术运算,代码可读性也更高,同时还能自动适配最后一行不足20条的边界场景:

bookname = "Psalm"
for start in range(1, 151, 20):
    # 生成当前行需要的索引,超过150自动截断
    indices = range(start, min(start + 20, 151))
    # 逐个生成hyperlink片段,再用&拼接成整行
    items = [f"\\hyperlink{{{bookname}{i}}}{{{i}}}" for i in indices]
    line = r"\\hline" + "\n" + " & ".join(items)
    # 此处补充你自己的后续处理逻辑即可

如果需要兼容Python 3.6以下的版本,可以提前计算每个索引的值再传入format:

bookname = "Psalm"
for start in range(1, 151, 20):
    indices = range(start, min(start + 20, 151))
    items = []
    for i in indices:
        items.append("\\hyperlink{{{bn}{i}}}{{{i}}}".format(bn=bookname, i=i))
    line = r"\\hline" + "\n" + " & ".join(items)
方案优势
  • 不用手动写20个重复的占位符,代码更简洁易维护
  • 自动处理最后一行不足20条的情况,不会生成无效的超链索引
  • 完全规避了占位符内运算导致的KeyError问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:27:02