在split()之后,列表遇到IndexError:list index超出范围

时间:2016-01-26 05:54:21

标签: python

我试图读取数据文件并获取数据。

我的Python代码:

f = open('datafile', 'r')
for line in f.readlines():
    line = line.strip()
    print line

    dataList = line.split('-')

    print dataList
    print len(dataList)
    print dataList[0]

    # print dataList[1] # IndexError: list index out of range
    # print dataList[2] # IndexError: list index out of range
    # print dataList[3] # IndexError: list index out of range

例如,在该文件中占一行,代码具有以下输出:

0A-02-01-04
['0A', '02', '01', '02']
4
0A

但访问其他成员数据会超出范围错误

2 个答案:

答案 0 :(得分:0)

当您的生产线没有足够的"部件"或者该生产线为空时,您会收到此错误。

如果您的行为空,

.split('-')将返回包含一个项目的列表:

>>> ''.split('-')
['']

首先过滤掉空白行,或者 - 如果您知道数据总是有4个部分,请检查结果列表的长度:

if len(dataList) == 4:
    # do stuff here
else:
    # blank line, or invalid data, etc.

答案 1 :(得分:-1)

您无法访问其他数据成员,因为您要拆分的行本身可能不包含-,因此当您将split应用于带有一个项目的行返回列表并且该项目等于{{1 }}

line

因此,通过索引检查数据是否具有调用line = '312312' print line.split('-') # ['312312'] 方法的元素数量。

len(data)