0

改行文字を含まない fasta ファイルがあります。ファイルは次のようになります。

>Sequence_ID(Num1)AAAAAAAAAAAAAAAAAAATTTTTTTAAAAA>Seqence_ID(Num2)AAAAAAATTTTTTTAAAATTTAATTTAATTATTAT>Sequence_ID (Num3)AAATTTTATTAGGAGGGA and so on for many lines.

このファイルを読み取り、すべてのシーケンス ID とシーケンス自体の最後に改行文字を挿入する Python プログラムを作成しようとしていたでしょう。出力が次のようになることを願っています。

>Sequence_ID(Num1) AAAAAAAAAAAAAAAAAAATTTTTTTAAAAA
>Seqence_ID(Num2) AAAAAAATTTTTTTAAAATTTAATTTAATTATTAT
>Sequence_ID (Num3)AAATTTTATTAGGAGGGA

これまでのところ、私はこれを持っています:

input = open('LG_allseqs.txt', 'r')

output = open('LG_Seqs.txt', 'w')

for line in input.readlines():

    if line == '>':
        output.write('\n' + line)
    else:
        output.write(line)

エラー メッセージはありません (構文は「正しい」) が、必要な特定の出力が生成されません。どんな提案でも大歓迎です。

4

3 に答える 3

2

「セリフ」と「文字」を混同しているようです。すべてが 1 行にある場合は、(readではなくを使用してreadlines) 1 つの文字列として読み取り、\n で区切られた行を書き出します。

inputtext = input.read()  # 'input' is not a very good name for a variable, btw
output.write('\n'.join('#'+line for line in inputtext.split('>')))
于 2013-05-22T18:17:57.287 に答える
0

ループ内の文字を置き換えていません。次のループを試してください。

for line in input.readlines():
    output.write(line.replace('>', '\n'))

以下のコメントで、「>」文字を保持したいと述べました。それを行うには、次のループを試してください。

for line in input.readlines():
    output.write(line.replace('>', '\n>'))
于 2013-05-22T18:17:10.503 に答える
0

これはあなたのための解決策かもしれません:

open('LG_Seqs.txt', 'w').write( 
     open('LG_allseqs.txt', 'r').read().replace(">", "\n>") )

および置換のデモ:

>>> x = """Sequence_ID(Num1)AAAAAAAAAAAAAAAAAAATTTTTTTAAAAA>Seqence_ID(Num2)AAAAAAATTTTTTTAAAATTTAATTTAATTATTAT>Sequence_ID (Num3)AAATTTTATTAGGAGGGA and so on for many lines."""
>>> print x.replace(">", "\n>")
>Sequence_ID(Num1)AAAAAAAAAAAAAAAAAAATTTTTTTAAAAA
>Seqence_ID(Num2)AAAAAAATTTTTTTAAAATTTAATTTAATTATTAT
>Sequence_ID (Num3)AAATTTTATTAGGAGGGA and so on for many lines.
于 2013-05-22T18:19:45.883 に答える