我一直在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