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

从文件字符串提取两位数字遇IndexError问题求助(禁用正则)

问题分析与解决

错误原因

触发IndexError的核心问题是:当遍历到字符串的最后一个字符时(即i = len(string)-1),你尝试访问string[i+1],这个索引超出了字符串的范围(字符串最大索引是len(string)-1)。比如你提到的字符串REDOHGMDPOXKFMHUDDOMLDYFAFYDLMODDUHMFKXOPDMGHODER5,末尾只有单个数字5,当i走到这个位置时,i+1就会越界。

修正后的代码

# 用with语句自动管理文件,避免手动关闭遗漏
with open("file.txt") as f:
    strings = f.read().split()

all_two_digits = []
for s in strings:
    current_list = []
    i = 0
    print(s)
    while i < len(s):
        # 先确保i+1不越界,再判断两个字符是否都是数字
        if i < len(s) - 1 and s[i].isdigit() and s[i+1].isdigit():
            current_list.append(s[i] + s[i+1])
            # 找到两位数字后,直接跳过下一个索引
            i += 2
        else:
            i += 1
    all_two_digits.extend(current_list)

关键改动说明

  • 越界防护:在判断两位数字前,先增加i < len(s) - 1的条件,确保i+1是有效的索引。
  • 简化遍历逻辑:不再通过切片修改原字符串并重置索引,而是直接通过i += 2跳过已处理的第二个数字,避免因修改字符串导致的遍历混乱。
  • 优化文件操作:使用with语句打开文件,会在代码块结束后自动关闭文件,比手动调用close()更安全可靠。
  • 统一结果收集:新增all_two_digits列表,将每个字符串提取到的两位数字统一收集,方便后续使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:15:34