如何使用python在文件中插入多个新行字符?

时间:2013-05-22 18:10:39

标签: python return character fasta

我有一个不包含任何返回字符的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)

没有错误消息(语法是“正确的”)但是我没有生成我想要的特定输出。任何建议都将非常感谢。

3 个答案:

答案 0 :(得分:2)

听起来你在混淆“线条”与“人物”。如果所有内容都在一行上,则将其作为单个字符串(使用read,而不是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('>')))

答案 1 :(得分:0)

您没有替换循环中的任何字符。尝试以下循环:

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

您在下面的评论中提到您想保留'>'字符。尝试以下循环来执行此操作:

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

答案 2 :(得分: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.