你能弄清楚为什么我的代码给我一个 IndexOutOfBounds 错误吗?
Can you figure out why my code is giving me an IndexOutOfBounds error?
我目前正在尝试通过 Python 填充 SQL 数据库(用于作业)。我创建了一个函数来帮助我做到这一点。
但是,当我 运行 该函数时,我收到“列表索引超出范围”索引错误。我将不胜感激所有帮助!
我已经尝试恢复到一些旧代码,但这对解决当前问题没有帮助。
据我所知,显然没有 "field[1]"(否则我不会收到此错误)我已经尝试打印我的函数的每个步骤...只是发现我可以, 事实上,打印难以捉摸的值,但仍然收到有关该行的错误?
我已经包含了我认为相关的所有代码,但是,如果您认为我一定遗漏了什么,请随时与我联系。非常感谢!
def populateStudentTable(textFile,targetTable):
connection = sqlite3.connect(dbName)
cursor = connection.cursor()
numRecs = 0
dataRecs = []
textRec = textFile.readline()
while textRec != "":
numRecs += 1
field = textRec.split(", ")
print(field)
print(field[0])
print(field[1])
textRec = textFile.readline()
当我运行程序时,它打印列表中的第二项:field[1]
但在那之后,它给了我一个错误...
['VENNGEOR', 'Georgia', 'Venna', '12', 'Maths', '8596746234']
VENNGEOR
Georgia
这是我收到的错误:
Traceback (most recent call last):
File "h:\Digital Solutions\VS Code\Dev.py", line 22, in <module>
numRecs = populateStudentTable(textFile,"tblMentor")
File "h:\Digital Solutions\VS Code\Dev.py", line 14, in
populateStudentTable:print(field[1])
IndexError: list index out of range
在阅读了一些评论并自己进行了更多调试之后,我发现 "buran" 是正确的。我只是留下了一些空行,并试图 运行 在空行上循环。
textFile
中的一行未包含您期望的 ,
个字符数。当您执行 field = textRec.split(", ")
时,如果行中少于两个 ,
,则结果 field
可能没有您预期的 3 个元素。
检查您文件的内容,或者干脆不打印 field
的元素而是打印 field
本身。这将使您更容易理解哪里做错了。
另请注意,您是按“,”(而不是“,”)拆分的,因此请注意这样的情况也可能导致您的错误:
>>> foo = "a,b,c, d"
>>> foo.split(", ")
['a,b,c', 'd']
我目前正在尝试通过 Python 填充 SQL 数据库(用于作业)。我创建了一个函数来帮助我做到这一点。 但是,当我 运行 该函数时,我收到“列表索引超出范围”索引错误。我将不胜感激所有帮助!
我已经尝试恢复到一些旧代码,但这对解决当前问题没有帮助。
据我所知,显然没有 "field[1]"(否则我不会收到此错误)我已经尝试打印我的函数的每个步骤...只是发现我可以, 事实上,打印难以捉摸的值,但仍然收到有关该行的错误?
我已经包含了我认为相关的所有代码,但是,如果您认为我一定遗漏了什么,请随时与我联系。非常感谢!
def populateStudentTable(textFile,targetTable):
connection = sqlite3.connect(dbName)
cursor = connection.cursor()
numRecs = 0
dataRecs = []
textRec = textFile.readline()
while textRec != "":
numRecs += 1
field = textRec.split(", ")
print(field)
print(field[0])
print(field[1])
textRec = textFile.readline()
当我运行程序时,它打印列表中的第二项:field[1] 但在那之后,它给了我一个错误...
['VENNGEOR', 'Georgia', 'Venna', '12', 'Maths', '8596746234']
VENNGEOR
Georgia
这是我收到的错误:
Traceback (most recent call last):
File "h:\Digital Solutions\VS Code\Dev.py", line 22, in <module>
numRecs = populateStudentTable(textFile,"tblMentor")
File "h:\Digital Solutions\VS Code\Dev.py", line 14, in
populateStudentTable:print(field[1])
IndexError: list index out of range
在阅读了一些评论并自己进行了更多调试之后,我发现 "buran" 是正确的。我只是留下了一些空行,并试图 运行 在空行上循环。
textFile
中的一行未包含您期望的 ,
个字符数。当您执行 field = textRec.split(", ")
时,如果行中少于两个 ,
,则结果 field
可能没有您预期的 3 个元素。
检查您文件的内容,或者干脆不打印 field
的元素而是打印 field
本身。这将使您更容易理解哪里做错了。
另请注意,您是按“,”(而不是“,”)拆分的,因此请注意这样的情况也可能导致您的错误:
>>> foo = "a,b,c, d"
>>> foo.split(", ")
['a,b,c', 'd']