我正在打开制表符分隔文件,对于每一行,我将元素拆分为一个列表。我可以访问列表[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
当我打印第一个元素时,它绝对是每行上的第一个项目,如果我打印整个列表,每行都有所有元素......任何人都可以指出我出错的地方因为我多年来一直坚持这个:/
由于
垫。
答案 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'