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

Python统计txt文件单词数程序报字符串索引越界错误求解决方案

问题排查与解决方案

报错原因

  • Python中字符串索引从0开始,长度为N的字符串合法索引范围是0 ~ N-1。你的characternum就是textstr的总长度,while循环判断条件写的i <= characternum,当i等于characternum时,访问textstr[i]已经超出合法索引范围,直接触发越界错误。
  • 你的判断逻辑中使用了textstr[i+1],哪怕把循环条件改成i < characternum,当i走到最后一个索引characternum - 1时,i+1等于characternum,依然会超出索引范围。

修复方案(完全保留你的原有实现思路)

只需要修改while循环的判断条件即可,调整后计数部分代码如下:

i = 0
wordnum = 1
# 循环上限调整为 characternum-1,保证i+1不会越界
while i < characternum - 1: 
    if textstr[i] not in alphabet and textstr[i+1] in alphabet:
        wordnum += 1
    i += 1
# 兼容空文件的边界情况:如果文件内容为空,单词数修正为0
if characternum == 0:
    wordnum = 0

可选优化点(不影响原有逻辑正确性)

  • 你写的统计字符数、转字符串的逻辑是完全正确的,没有问题,可以简化为两行代码,效果完全一致:
textstr = page.read()
characternum = len(textstr)
  • 读取文件建议使用with语法,会自动关闭文件,不需要手动调用close(),避免程序异常时文件未关闭的问题,同时注意Windows路径的反斜杠需要转义:
# 路径里的反斜杠写两个转义,或者直接用正斜杠,避免路径识别错误
with open("venv\\harrry_potter.txt", "r", encoding="utf-8") as page:
    list_of_lines = page.readlines()
    # 后续原有逻辑不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:45:03