在此先感谢您的帮助。
我遇到了以下代码段的问题:
category = path.split("/")[3]
label = int(category.split("_")[0][1])
y.append(label)
错误如下:IndexError:列表索引超出范围。当我进行拆分时,错误出现在第一行。我(认为)我理解错误的含义,但是当我执行len(path)时,我得到33 ...所以[3]应该不会出问题。
我测试了以下代码片段,以更好地理解拆分:
txt = "welcome to the jungle"
x = txt.split()[2]
print(x)
对于上面的代码,输出是预期的“the”,因为它是[2]条目。
现在,回到我的代码,当我运行时:
x = path.split()
print(x)
我得到以下输出:
['.\\00\\01_palm\\frame_00_01_0001.png']
我遇到的代码来自我在本地计算机(Jupyter)上重新创建的公共(public)GitHub项目。当我在Google Colab上运行同一项目时,我没有任何问题。但是,当我在本地执行此操作时,就会遇到此问题。
问题1)有人可以向我解释代码为什么使用:path.split(“/”)[3]吗?为什么是“/”?从输出中看到的实际路径只有“\”,“/”是否还意味着其他内容?抱歉,我是python的新手。
问题2)如何解决“IndexError:列表索引超出范围”?
谢谢
最佳答案
从代码中可以清楚地看出,该路径是在Github
上用于路径分隔符为Linux
的/
机器的,但您正在路径分隔符为windows
的\\
上运行它,因此您必须将代码修改为
category = path.split("\\")[3]
label = int(category.split("_")[0][1])
y.append(label)
对于任何机器,如果要查看路径分隔符,则可以
import os
print(os.path.sep)
对于
Linux
系统,输出为:/
关于python - IndexError : List index out of range.. despite being within range?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61585185/