我對python很新,有一些問題,我似乎無法找到答案。 我有一個大文件,我正在嘗試閱讀,然後分割並寫出特定信息。我在讀入和分割時遇到問題,它只是一遍又一遍地打印相同的東西。閱讀一個文件,分裂,然後寫出所需的輸出
blast_output = open("blast.txt").read()
for line in blast_output:
subFields = [item.split('|') for item in blast_output.split()]
print(str(subFields[0][0]) + "\t" + str(subFields[0][1]) + "\t" + str(subFields[1][3]) + "\t" + str(subFields[2][0]))
我的輸入文件有看起來像這樣的多行:
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
我收到的輸出是這樣的:
c0_g1_i1 m.1 Q9HGP0.1 100.00
c0_g1_i1 m.1 Q9HGP0.1 100.00
c0_g1_i1 m.1 Q9HGP0.1 100.00
c0_g1_i1 m.1 Q9HGP0.1 100.00
但是我想是
c0_g1_i1 m.1 Q9HGP0.1 100.0
c1002_g1_i1 m.801 Q10302.1 100.0
c1003_g1_i1 m.803 Q6BDR8.1 100.0
c1004_g1_i1 m.804 O94325.1 100.0
您應該使用line.split()在第三行。 – giliev
'blast_output'是一個字符串,遍歷一個字符串給你的字符,而不是行。在開始處移除'.read()'以迭代文件的行。 –
嘗試*展開* /擴展您的列表理解並將所有這些字段分配給變量。然後你可以檢查單個變量(也許用打印語句)來查看發生了什麼。 – wwii