0

我有一个不包含任何返回字符的 fasta 文件。该文件看起来像这样:

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

我一直在尝试制作一个 python 程序来读取这个文件,并在每个序列 ID 和序列本身的末尾插入一个换行符。我希望输出看起来像这样:

>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

听起来您将“线条”与“字符”混淆了。如果所有内容都在一行上,则将其作为单个字符串读取(使用read, not readlines),然后写出 \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 回答