Python在尝试获取列表

时间:2017-11-10 18:28:48

标签: python python-3.x list

我试图从.gtf文件中提取一些信息,这基本上就像是一种数据库,其中项目是制表符分隔的(或者我告诉过)。我编写了以下简单代码,将文件的每一行分解为一个列表,因此列表中的每个项目都是"列之一" (还打印出注释行,但忽略它)

for line in file:
    if line.startswith('#'):
        print (line)
line = line.rstrip('\n')
field = line.split()

非常简单的代码,当我放入一个打印(字段)时,它打印出许多像这样一个具有不同数据的行

['1', 'havana', 'exon', '7962767', '7962875', '.', '+', '.', 'gene_id', '"ENSG00000116288";', 'gene_version', '"12";', 'transcript_id', '"ENST00000497113";', 'transcript_version', '"1";', 'exon_number', '"1";', 'gene_name', '"PARK7";', 'gene_source', '"ensembl_havana";', 'gene_biotype', '"protein_coding";', 'transcript_name', '"PARK7-210";', 'transcript_source', '"havana";', 'transcript_biotype', '"processed_transcript";', 'exon_id', '"ENSE00001935602";', 'exon_version', '"1";', 'transcript_support_level', '"3";']

我认为它看起来像一个列表。所以我用print()

来测试它
print(field[0])
print(field[1])
print(field[-1])
print(field[-2])

那些给我这个

1
havana
"5";
transcript_support_level

等。 所以它看起来像一个列表,并且像列表一样,但我想要的数据在第三列,所以我只是将代码更改为字段[2],它给了我这个

   print(field[2])
IndexError: list index out of range

我尝试输入不同的数字,但它都是同样的错误,我真的无法弄清楚为什么它会让我拉出列表中的前两项和后两项,但是没有其他的?我已经尝试了很多东西,但我真的很难过这里要做什么。我无法继续使用我的代码,除非我能够引用这些列表中的第三列/项目。

1 个答案:

答案 0 :(得分:0)

我确实通过以下代码找到了解决方法

extractArrayFromDottedString()

它非常简单,我可能应该早点想到它,但是它让我打印出第三列中的所有项目,所以它有效,但我觉得我只是用不同的词语写了同样的东西。仍然混淆为什么它只会以有限的方式工作,但另一种方式......