我一直在Python中收到索引错误。我通过读取文件并简单地打印所需的输出,使我的代码正常工作,但现在我正在尝试将输出写入文件。在编写代码时,我似乎遇到索引问题。我尝试了一些不同的事情,我留下了一个尝试评论。无论哪种方式,我不断收到索引错误。 编辑原始错误可能是由错误的日食引起的,但在服务器上运行时,有一个新的问题*在Python中写入文件
现在我可以得到它的运行并产生输出到一个txt文件,但它只能打印单个输出
with open("blast.txt") as blast_output:
for line in blast_output:
subFields = [item.split('|') for item in line.split()]
#transId = str(subFields[0][0])
#iso = str(subFields[0][1])
#sp = str(subFields[1][3])
#identity = str(subFields[2][0])
out = open("parsed_blast.txt", "w")
#out.write(transId + "\t" + iso + "\t" + sp + "\t" + identity)
out.write((str(subFields[0][0]) + "\t" + str(subFields[0][1]) + "\t" + str(subFields[1][3]) + "\t" + str(subFields[2][0])))
out.close()
IndexError: list index out of range
输入文件的样子:
c0_g1_i1|m.1 gi|74665200|sp|Q9HGP0.1|PVG4_SCHPO 100.00 372 0 0 1 372 1 372 0.0 754
c1002_g1_i1|m.801 gi|1723464|sp|Q10302.1|YD49_SCHPO 100.00 646 0 0 1 646 1 646 0.0 1310
c1003_g1_i1|m.803 gi|74631197|sp|Q6BDR8.1|NSE4_SCHPO 100.00 246 0 0 1 246 1 246 1e-179 502
c1004_g1_i1|m.804 gi|74676184|sp|O94325.1|PEX5_SCHPO 100.00 598 0 0 1 598 1 598 0.0 1227
c1005_g1_i1|m.805 gi|9910811|sp|O42832.2|SPB1_SCHPO 100.00 802 0 0 1 802 1 802 0.0 1644
c1006_g1_i1|m.806 gi|74627042|sp|O94631.1|MRM1_SCHPO 100.00 255 0 0 1 255 47 301 0.0 525
预计输出
c0_g1_i1 m.1 Q9HGP0.1 100.00
c1002_g1_i1 m.801 Q10302.1 100.00
c1003_g1_i1 m.803 Q6BDR8.1 100.00
c1004_g1_i1 m.804 O94325.1 100.00
c1005_g1_i1 m.805 O42832.2 100.00
c1006_g1_i1 m.806 O94631.1 100.00
我的输出而不是只有线路,而不是所有行
您需要包含输入文件的示例 –
首先检查子字段的形状。你会发现你为什么会得到这个错误。 –
写这个文件不是问题,而是写入你的'subfields'变量; IndexError意味着你的一个索引根本不存在,它迁移为'subFields [1] [3]'或'subFields [2] [0]'。你应该猜到它与你的评论尝试,python总是表明错误的确切线 – jadsq