随地吐痰后访问列表条目。应该很简单,但我不能让这个工作?

时间:2013-06-07 05:27:01

标签: python string list elements

我正在打开制表符分隔文件,对于每一行,我将元素拆分为一个列表。我可以访问列表[0]中的第一个元素,但是尝试访问后续元素不起作用。

返回每行第一个元素的代码..这可以按预期工作

with open(fileX) as GFF_in:

   for line in GFF_in:

       list = line.split('\t')

print list[0]

但尝试使用;

访问任何其他6个元素
>>>print list[1] #2nd element

>>>print list[4] #5th element

抛出错误“IndexError:list index out of range”

这是超级基本代码......我无法理解为什么这不起作用!!?手动将项目分配到列表并打印它们也没有什么不同,即;

>>> food = 'bread', 'chicken', 'the_other_white_meat'

>>> print food[2]

>>> the_other_white_meat

当我打印第一个元素时,它绝对是每行上的第一个项目,如果我打印整个列表,每行都有所有元素......任何人都可以指出我出错的地方因为我多年来一直坚持这个:/

由于

垫。

2 个答案:

答案 0 :(得分:2)

通常的原因是文件以空行结束。这很容易抵御

for line in GFF_in:
    if not line:  # ignore empty lines
        break
    list_without_meaningful_name = line.split('\t')
    ...

for line in GFF_in:
    if not line:  # ignore empty lines
        break
    list_without_meaningful_name = line.split('\t')
    if len(list_without_meaningful_name) < 6:
        # uh oh
    ...

答案 1 :(得分:0)

也许你想做这样的事情:

>>> food = 'bread', 'chicken', 'the_other_white_meat'
>>> lis = [y for x in food for y in x.split('_')]
>>> lis
['bread', 'chicken', 'the', 'other', 'white', 'meat']
>>> lis[1]
'chicken'
>>> lis[5]
'meat'