我需要在包含命令记录的文件上应用for循环,以将其中一列转换为列表。请告知,谢谢。
数据如下:
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG
asset 8 100 1009663 1
asset 7 200 523533 1
asset 9 319710 319710 0
asset 5 870935 870935 0
这是我的代码:
lag_list = []
with open(fname) as f:
f.readline()
lines = f.readlines()[1: ]
length = len(lines)
print(length)
for line in lines:
print "Hello"
print line
print "hello 2"
data=line.split(' ')
lag_list.append(data[4])
data=line.split("\t")
lag_list.append(data[4])
print lag_list
return
但是返回此错误:
lag_list.append(data[4])
IndexError: list index out of range
答案 0 :(得分:0)
您的数据有
-一行中没有4个标签
-一行中是否有4个空格
-或者您在源数据的最后一行之后输入\n
读取这些行并进行拆分时,结果列表中没有5个元素-因此,在访问data[4]
时出现索引错误。
用空格和制表符分隔同一列表对我来说没有多大意义-我希望它对您的数据和应用程序有用。
在对拆分列表进行索引之前,先对其进行检查:
lag_list = []
with open(fname) as f:
f.readline()
lines = f.readlines()[1: ]
length = len(lines)
print(length)
for line in lines:
print "Hello"
print line
print "hello 2"
data = line.split(' ')
if len(data) >= 5: # check if safe to index into
lag_list.append(data[4]
else:
print("Not enough elements - need 5 at least:", data)
data = line.split("\t")
if len(data) >= 5: # check if safe to index into
lag_list.append(data[4])
else:
print("Not enough elements - need 5 at least:", data)
print lag_list
return