2015-10-07 61 views
-3

讀我有一個FASTA文件,它看起來像這樣:如何在特定的行從文件

click for image

我想這一點:

sequence1: ATGCACCGT 
sequence2: GACCTAGCA 

結果。

我該怎麼辦?

編輯: 我會試着重新制定它,

所以我有一個(FASTA)文件,具有多個行。 某些行具有特殊字符(>)作爲第一個字符。我不需要這些行,但是這些行顯示了第一個序列結束的位置,以及另一個開始的位置。

我想它讀入兩個單獨字符串 第一個字符串是第一序列,第二個是第二個。

,但我不知道我怎麼能告訴我想讀,直至>標誌pycharm比其他人要進入到另一個字符串,直到下一個>符號...

+1

你是什麼意思「它看起來像這樣」?你是否想把JPG轉換成ASCII數據?你爲什麼要使用pycharm?請更詳細地解釋你想要做什麼。 – Shep

+0

沒有,一開始我把它寫下來只是,但計算器不喜歡進入:「( 我只是想使其可見它的多條線路,這是一個FASTA文件,並在其與此號開始:> ...它被賦予.the格式爲: >信息行中輸入序列行輸入>信息行中輸入序列行 – AmlesLausiv

+0

點擊,當你編輯,你只需要格式化數據的代碼問號你可能會得到downvoted因爲。包括代碼作爲圖像是堆棧溢出中的許多人的寵物之一,也沒有必要包含「編輯:」,然後再加上更多的解釋:只是澄清你的原始文章不幸的是,當你的帖子得到很多downvotes它也得到排名較低的問題頁面,這意味着你不可能得到有用的答案。 – Shep

回答

0

我看着維基百科上的FASTA規範。看起來像長序列可以跨越多行。在這種情況下,我假設你會想要連接線。它還表示信息行以「>」開頭,但也可以以「;」開頭。假設該文件是足夠小,可以完整地讀到內存中,我想出了下面的使用正則表達式:

import re 

regex = re.compile(r"[;>](?P<description>[^\n]*)\n(?P<sequence>[^;>]+)") 

with open("datafile.txt","r") as f: 

    sequences = regex.findall(f.read()) 
    for i, info in enumerate(sequences): 
      description, sequence = info 
      print("sequence%d: %s" % (i, sequence.replace("\n",""))) 
0
with open('data', 'r') as f: 
    s = [x.strip() for x in f] 

for i, el in enumerate(s): 
    if i % 2 == 0: 
     s[i] = 'sequence' + str(i+1) 


print(s) 

['sequence1', 'ATGCACCGT', 'sequence3', 'GACCTAGCA'] 
相關問題