韩小小鱼 2023-08-23 19:33 采纳率: 100%
浏览 4
已结题

python中关于‘IndexError: list index out of range’的问题

在编写代码时遇到了IndexError: list index out of range这样的报错。
上网查阅得知出现此问题的原因是因为访问的是空列表或者是长度超过了列表长度。但我觉得我的问题不是这两个中的任何一个。
以下为问题代码:

import jieba
f = open('data.txt','r',encoding = 'utf-8')
fo = open('clean.txt','w')
txt = f.read()
bd = [',','。','、','(',')','—',' ','|',':',';','“','”']
s = ''
i = jieba.lcut(txt)
for j in range(len(i)):
  if i[j] in bd:
        i.pop(j)
fo.write(s)
f.close()
fo.close()


之所以我这样认为是因为当我将代码中的‘ i.pop(j) ’改为print(i[j])时,代码可以正常运行,这令我很困惑,希望有佬解答一下
感谢感谢!

  • 写回答

2条回答 默认 最新

  • 梦幻精灵_cq 2023-08-23 19:46
    关注
    • 下标引用溢出错误
      随着您的不断i.pop(),您的i在不断缩短;而您的j会遍历轮询到原长度的下标,到后面毕然会报“下标引用溢出错误”。
    • 您不是就想剔除jieba分词后的标点字符么,直接用列表解析+if条件筛选,比用i.pop()效率更高

      img

    代码

    #!/sur/bin/nve python
    # coding: utf-8
    
    txt = '''这里 有 两个 注意 点 :
    (1)不能 将 客户端 最小化 。
    (2)不能 将 客户端 缩小 到 后台 运行 的 小菜单 。
    
    因为 , 如果 放到 最小化 时 , 它 实际上 是 读取 不 到 客户端 的 信息 的 ,这点 在 测试 时候 需要 特别注意 。'''.split()
    bd = [',','。','、','(',')','—',' ','|',':',';','“','”', '\n',':']
    out_txt = [i for i in txt if i not in bd]
    print(f"\n输入列表:{txt}\n\n输出列表:{out_txt}\n") 
    
    

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月31日
  • 已采纳回答 8月23日
  • 创建了问题 8月23日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题