我遇到了將列表寫入文件的問題。我註釋某些文件,將它們轉換爲某種格式,因此我讀取序列對齊文件,將它們存儲在列表中,進行必要的格式化,然後將它們寫入新文件。問題是,當我的包含序列比對的列表結構正確時,將它們寫入新文件時產生的輸出不正確(它不會複製我的列表結構)。我只包括我的輸出的一部分以及它應該是什麼樣子,因爲列表本身太長而不能發佈。python將一個列表寫入文件不正確
輸出寫入文件:
>
TRFE_CHICK
From XALIGN
MKLILCTVLSLGIAAVCFAAP (seq spans multiple lines) ...
ADYIKAVSNLRKCS--TSRLLEAC*> (end of sequence, * should be on a newline, followed by > on a newline as well)
輸出應該被寫爲:
>
TRFE_CHICK
From XALIGN
MKLILCTVLSLGIAAVCFAAP (seq spans many lines) ...
ADYIKAVSNLRKCS--TSRLLEAC
*
>
它確實在這個misformatting多次。我嘗試過酸洗和取消清單,但是這會進一步造成錯誤。
我的用於產生的列表,並寫入文件的代碼:
new = []
for line in alignment1:
if line.endswith('*\n'):
new.append(line.strip('*\n'))
new.append('*')
else:
new.append(line)
new1 = []
for line in new:
if line.startswith('>'):
twolines = line[0] + '\n' + line[1:]
new1.append(twolines)
continue
else:
new1.append(line)
for line in new1:
alignfile_annot.write(line)
基本上,以便它的內容對準文件,插入序列的末端和*字符之間的線我已編碼它和也使得ID後跟ID碼總是在新的行上。這是我的列表建立的方式,但不是寫入文件的方式。任何人都知道爲什麼錯誤格式? 道歉的長文,我試圖保持儘可能短,以使我的問題明確 我運行的Python 2.6.5
你能提供樣本輸入嗎?我想你可以用更少的代碼來實現這個結果。 – garnertb 2011-05-21 13:07:44
輸入是一個包含多個序列比對的ASCII文件。輸入如下所示:> TRFE_HUMAN ...一個非常長的序列,然後在一個新行上跟隨*> TRFE_MOUSE ...另一個長序列,然後是*。代碼很長,因爲我需要關注很多格式細節,例如將兩行分割>和TRFE_MOUSE,並將*放在換行符 – Spyros 2011-05-21 13:19:30