4

だから私はこれを含むファイルを持っています:

SequenceName 4.6e-38 810..924
SequenceName_FGS_810..924 VAWNCRQNVFWAPLFQGPYTPARYYYAPEEPKHYQEMKQCFSQTYHGMSFCDGCQIGMCH
SequenceName 1.6e-38 887..992
SequenceName_GYQ_887..992 PLFQGPYTPARYYYAPEEPKHYQEMKQCFSQTYHGMSFCDGCQIGMCH

これらのタンパク質配列を含む行のみをプログラムに読み取らせたい。今まで私はこれを手に入れました、それは最初の行をスキップして2番目の行を読みます:

handle = open(filename, "r")
handle.readline()
linearr = handle.readline().split()
handle.close()

fnamealpha = fname + ".txt"
handle = open(fnamealpha, "w")
handle.write(">%s\n%s\n" % (linearr[0], linearr[1]))
handle.close()

しかし、それは最初のシーケンスのみを処理し、シーケンスを含むすべての行を処理するために必要なので、ループが必要です、どうすればそれを行うことができますか?txtファイルに保存する部分も非常に重要なので、これら2つの目的を組み合わせる方法を見つける必要があります。上記のコードでの私の出力は次のとおりです。

>SequenceName_810..924
VAWNCRQNVFWAPLFQGPYTPARYYYAPEEPKHYQEMKQCFSQTYHGMSFCDGCQIGMCH
4

2 に答える 2

14

さて、私はあなたの質問を理解していると思います-あなたはファイルの行を繰り返したいですよね?しかし、シーケンスの2行目(タンパク質シーケンスを持つ行)だけが重要です、正しいですか?これが私の提案です:

# context manager `with` takes care of file closing, error handling
with open(filename, 'r') as handle:
    for line in handle:
        if line.startswith('SequenceName_'):
             print line.split()
             # Write to file, etc.

私の推論は、あなたが興味があるのは。で始まる行だけだということですSequenceName_###

于 2012-04-15T04:42:41.343 に答える