python - 为什么会出现索引超出范围错误?错误如下,
问题描述
这是错误:
我的代码:
def isVariable(line):
modifier = ['private','protected','public']
datatype = ['String','int','float','boolean']
status = False
linelist = list(line.split())
if(linelist[0] in modifier):
if(linelist[1] in datatype):
if(';' in linelist[len(linelist)-1]):
status = True
return status
else:
return status
f = open('Student.java','r')
vList = []
for line in f:
status = isVariable(line)
if status == True:
vList.append(line)
print(vList)
怎么了?
解决方案
看起来您文件中的其中一行是空的,因此调用list(line.split())
返回一个空列表。因此,没有第零个元素,将IndexError
. 您可以添加一些try ... except ...
块来处理此错误。尝试:
def isVariable(line):
modifier = ['private','protected','public']
datatype = ['String','int','float','boolean']
status = False
linelist = list(line.split())
try:
has_modifier = linelist[0] in modifier
except IndexError:
return status
try:
has_datatype = linelist[1] in datatype
except IndexError:
return status
try:
has_semicolon = ';' in linelist[-1]
except IndexError:
return status
if(has_modifier and has_datatype and has_semicolon):
status = True
return status
else:
return status
f = open('Student.java','r')
vList = []
for line in f:
status = isVariable(line)
if status == True:
vList.append(line)
print(vList)
推荐阅读
- excel - 将 Excel 数据导出到 Access 时如何声明动态范围?
- amazon-web-services - 从 AWS S3 的文件夹和子文件夹中递归删除 DS_Store 文件
- python - Python Kafka 消费者在消息到达时未读取消息
- angular - 如何将 ngx-quill 富文本编辑器数据从数据库显示到页面以进行查看模式
- grammar - 是否有官方的 Concourse 管道语法?
- javascript - 使用 react-select 的键盘导航在 sweetalert2 (sweetalert2-react-content) 中不起作用
- intellij-idea - 无法连接到 Intellij 中的 h2 数据库
- c - C - mktime() 在不应该的地方返回 -1
- angular - 在我点击链接两次之前,我的新闻提要不会显示
- javascript - 怎样才能先setState再运行onSubmit函数