[英]IndexError: list index out of range, but each string can be printed out
当它的前两列与fileB相同时,我正在编写一个脚本来缓冲来自fileA的行。 fileA是一个由Tab分隔的三列的txt文件,而fileB是由Tab分隔的两列的txt文件。 但是它一直显示如下错误:“ site = a [0] +'\\ t'+ a [1] IndexError:列表索引超出范围”但是我可以打印a [0],a [1],a [2 ]和网站。
这是我的代码:
fileB=open('AtoG_mock.txt').readlines()
fileA=open('depth_ice.txt').readlines()
outfile=open('AtoG_depth_ice.txt','w')
dict1={}
for line in fileA:
a=line.strip().split('\t')
site = a[0]+' '+a[1]
if site not in dict1:
dict1[site]=a[2]
for line in fileB:
b=line.strip().split('\t')
site=b[0]+' '+b[1]
if site in dict1:
outfile.write(b[0]+'\t'+b[1]+'\t'+dict1[site]+'\n')
outfile.close()
我将不胜感激任何帮助!
由于无法访问您的数据文件,我们无法给出确切的答案,但是您可以通过将有问题的行包装在try/except
块中来轻松调试此问题:
try:
site = a[0]+' '+a[1]
except IndexError:
print("Error: a is", a)
raise
最有可能在某处有一个空行,通常是最后一行。
有时候,我有时会遇到空白行。 您可能需要在解析之前进行检查。
if line == "": pass
另一种可能是缺少数据。
if len(a) != 3: print a
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.