2016-07-28 9 views
0

テキストファイルを読み取り、その中の情報を解析するプログラムを作成しています。次のようにテキストファイルの例は次のとおりです。テキストファイル内のヘッダーの割り当てと配列の構築

->DQB1*02:02:01:01 
GAACTTTGCTCTTTTCACCAAAACTTAAGGCTCCTCAGGGTGTGTCTAAGACAACAGCAGTAAAAATGTCTATGACAGCAATTTTCTCTCCCCTGAAATATGATCCCCACTTAATTTGCCCTATTGAAAGAATCCCAAGTATAAGAACAACTGGTTTTTAATCAATATTACAAAGATGTTTACTGTTGAATCGCATTTTTCTTTGGCTTCTTAAAATCCCTTAGGCATTCAATCTTCAGCTCTTCCATAAT 

->OMIXON_CONSENSUS_M-86-11-9517_DQB1*02:02:01 
GTCCAAGCTGTGTTGACTACCACTACTTTTCCCTTCGTCTCAATTATGTCTTGGAAGAAGGCTTTGCGGATCCCTGGAGGCCTTCGGGTAGCAACTGTGACCTTGATGCTGGCGATGCTGAGCACCCCGGTGGCTGAGGGCAGAGACTCTCCCGGTAAGTGCAGGGCCACTGCTCTCCAGAGCCGCCACTCTGGGAACAGGCTCTCCTTGGGCTGGGGT 

->GENDX_CONSENSUS_M-86-11-9517_DQB1*02:02:01:01 
TGCCAGGTACATCAGATCCATCAGGTCCAAGCTGTGTTGACTACCACTACTTTTCCCTTCGTCTCAATTATGTCTTGGAAGAAGGCTTTGCGGATCCCTGGAGGCCTTCGGGTAGCAACTGTGACCTTGATGCTGGCGATGCTGAGCACCCCGGTGGCTGAGGGCAGAGACTCTCCCGGTAAGTGCAGGGCCACTGCTCTCCAGAGCCGCCACTCTGGGA 

私はので、私は私ができるので、その後のヘッダ配列とシーケンス配列として残りのテキストを作成することができ、ヘッダとして>で始まるすべての行を割り当てるしようとしていますシーケンスを整列させ、解析する。ヘッダーの割り当てに問題があります。これまでの私のコードでは、次のように書いています。

def readfile(): 

with open ("testAllele1.txt", "r") as myfile: 
    y = myfile.read() 
with open(y) as z: 
    for line in z: # build array 
     counter=1 
     if line.startswith(">"): #header array 
      header(counter)=line 
      counter=counter+1 
     else: 
      sequence(counter)=line #sequence array 

助けてください! (また、私は初心者から中級プログラマのようなので、あまりにも難しいものはありません)

答えて

1

あなたの例は壊れています。 すべての行は、->で始まります。

だから、最初のスペース文字で分割したいとします。

#! /usr/bin/env python 

# read the file and split into lines 
y = open("testAllele1.txt", "r").read() 
z = y.splitlines() 

# initialize 
header = [] 
sequence = [] 

#loop over all lines 
for line in z: 
    if line.startswith("->"): 
     h, s = line.split() 
     h = h[2:] # cut away the leading "->" 
     header.append(h) 
     sequence.append(s) 

print header 
print sequence 
関連する問題