2012-09-10 76 views
0

我试图从令牌变量来访问列表元素,但我一直收到错误为什么我不能访问列表元素

print token[0] 
IndexError: list index out of range' 

当我尝试从令牌列表访问元素。

文件底垫文件的内容是:

ZraI  3 GAC'GTC  0 ! AatII       >INV 
;ZrmI  3 AGT'ACT  0 ! ScaI,AssI,BmcAI     >I 

而且代码:

with open (rebase_file, 'r') as rebase: 
    lines = rebase.readlines() 
    string = '' 
    for line in lines: 
     token = line.split() 
     print token[0] 
+1

不要做'rebase.readlines()'然后遍历这个结果,只需要'为rebase'中的行。 –

+0

仅用于调试打印行,'print line' –

回答

6

你遇到一个空行:

>>> ''.split()[0] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: list index out of range 

只需使用if line.strip():测试此:

with open (rebase_file, 'r') as rebase: 
    for line in rebase: 
     if line.strip(): 
      token = line.split() 
      print token[0] 

注意,我遍历所有的文件,而不是直接阅读所有到内存中一气呵成的好。

+0

'... token = line.split();如果令牌:...'可能更好 – gorlum0

+0

@ gorlum0:也许,取决于还在做什么。没有足够的上下文来打电话,真的。 –

2

你可能有一个空行,检查此。

+0

是的,确实空行是问题的根源。谢谢 – veepsk

+0

酷!你应该将其中一个答案标记为正确的。 – piokuc

1

貌似线拟合从蟒docs这样的描述:

分裂一个空字符串或由刚好空白的与无分离器返回[]

这意味着标记为空数组和一个串令牌[0]超出范围。

相关问题