繁体   English   中英

IndexError:列表索引超出范围,但是每个字符串都可以打印出来

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM