1

我正在打开一个制表符分隔的文件,并且对于每一行,我将元素拆分为一个列表。我可以访问列表 list[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:列表索引超出范围”

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

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

>>> print food[2]

>>> the_other_white_meat

当我打印第一个元素时,它绝对是每一行的第一项,如果我打印整个列表,每一行的所有元素都在那里......谁能指出我哪里出错了多年来一直坚持这一点:/

谢谢

垫。

4

2 回答 2

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
    ...
于 2013-06-07T05:43:56.787 回答
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'
于 2013-06-07T05:32:51.670 回答