我有一个不包含任何返回字符的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)
没有错误消息(语法是“正确的”)但是我没有生成我想要的特定输出。任何建议都将非常感谢。
答案 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.