python - 你能弄清楚为什么我的代码给了我一个 IndexOutOfBounds 错误吗?
问题描述
我目前正在尝试通过 Python 填充 SQL 数据库(用于分配)。我创建了一个函数来帮助我做到这一点。但是,当我运行该函数时,我收到“列表索引超出范围”索引错误。我将不胜感激所有帮助!
我曾尝试恢复到一些旧代码,但它对当前问题没有帮助。
据我了解,显然没有“字段 [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()
当我运行程序时,它会打印列表中的第二项:字段 [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(", ")
则结果可能没有您期望的 3 个元素。field
,
检查文件的内容,或者简单地代替field
printfield
本身的打印元素。这将使您更容易理解您在哪里做错了。
还要注意你是用“,”(不是“,”)分割的,所以要注意这样的情况也可能导致你的错误:
>>> foo = "a,b,c, d"
>>> foo.split(", ")
['a,b,c', 'd']
推荐阅读
- postgresql - 来自任意数量的人的 Postgress 时间序列存储
- java - Fluent builder设计模式——如何强制客户设置变量
- amazon-web-services - 不同客户端对 S3 的访问不同(CyberDuck 与 ExpanDrive)
- javascript - 通过 JQuery 函数传递 HTML 名称
- javascript - Concat 将数组变成对象 Javascript + Next JS
- spring-boot - Feign Client、DTO 是否应该驻留在自己的服务实现模块中?
- postgresql - 如何在 POSTGRES 中动态选择多个模式中的相同表
- python - Python - 在异步中迷失方向
- c++ - 使用模板化类型重载函数模板
- javascript - 克隆 JQuery 后添加额外的输入文本