Python列表:索引器:列表索引超出范围

2024-06-10 08:22:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,目前正在学习。我得到了文本文件,每行字之间的空格数可变: 我试图将其解读如下:

        import re
   ...: results = []
   ...: with open ("../../103.Immune_gene_families/Immune_genes/Human/human_immunegene.hits") as file:
   ...:     for line in file:
   ...:         if not line.startswith("#"):
   ...:             line = re.sub("\s\s+" , " ", line)
   ...:             #print(line)
   ...:             ens_id = line.split(" ")[1]
   ...:             print(ens_id)
   ...:

但我得到了以下错误:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-3-469f5598d359> in <module>
      6             line = re.sub("\s\s+" , " ", line)
      7             #print(line)
----> 8             ens_id = line.split(" ")[1]
      9             print(ens_id)
     10

IndexError: list index out of range

我收到的示例行

print(line)
['ENSG00000128016', '115', '138', '107', '147', 'TF106503', '9', '32', '5.9', '8.3', '0', 'No_clan', '']
['ENSG00000128016', '135', '169', '130', '172', 'TF317698', '454', '488', '18.0', '0.00073', '0', 'No_clan', '']
['ENSG00000128016', '137', '175', '134', '196', 'TF318914', '95', '132', '21.9', '8e-05', '0', 'No_clan', '']
['ENSG00000128016', '137', '167', '130', '173', 'TF326635', '1096', '1127', '5.7', '3.3', '0', 'No_clan', '']
['ENSG00000128016', '138', '170', '133', '173', 'TF329017', '881', '912', '5.3', '4.3', '0', 'No_clan', '']
['ENSG00000128016', '139', '166', '129', '173', 'TF105541', '764', '791', '9.3', '0.38', '0', 'No_clan', '']
['ENSG00000128016', '139', '166', '132', '172', 'TF105970', '278', '305', '8.4', '0.6', '0', 'No_clan', '']
['ENSG00000128016', '140', '170', '131', '174', 'TF314946', '110', '140', '4.5', '6.3', '0', 'No_clan', '']
['ENSG00000128016', '142', '167', '134', '184', 'TF329287', '9', '33', '6.8', '2.3', '0', 'No_clan', '']

如果你能在这方面帮助我,我将不胜感激

谢谢,, AK


Tags: noinreidlinefilesplitprint
2条回答

由于line.split(" ")中的元素少于2个,因此会出现索引错误, 也就是说line中的空格少于2个。请尝试line.split(" ")[0]

import re
results = []
with open ("../../103.Immune_gene_families/Immune_genes/Human/human_immunegene.hits") as file:
    for line in file:
        if not line.startswith("#"):
            line = re.sub("\s\s+" , " ", line)
            #print(line)
            ens_id = line.split(" ")[0]
            print(ens_id)

欢迎来到SO

如果你跑

string = 'abc'
print(string.split(' '))

你会看到结果是

['abc']

如果您试图string.split(' ')[1],您将生成一个IndexError

所以现在发生的事情是,在某个地方,你可能没有你想要分裂的角色

相关问题 更多 >