将列转换为列表

时间:2019-04-14 16:52:51

标签: python-2.7

我需要在包含命令记录的文件上应用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

1 个答案:

答案 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