如何从文件中读取特定行

How to read in specific lines from file

我有一个 FASTA 文件,它看起来像这样:

我想要这个:

sequence1: ATGCACCGT
sequence2: GACCTAGCA

结果。

我该怎么做?

编辑: 我会尝试重新制定它,

所以我有一个包含多行的 (fasta) 文件。 有些行的第一个字符是特殊字符 (>)。我不需要这些行,但这些行显示了第一个序列的结束位置和另一个序列的开始位置。

我想把它读成两个单独的字符串 first string 是第一个序列,second 是第二个。

但我不知道如何告诉 pycharm 我想读到 > 符号,然后其余的转到另一个字符串,直到下一个 > 符号...

with open('data', 'r') as f:
     s = [x.strip() for x in f]

for i, el in enumerate(s):
    if i % 2 == 0:
        s[i] = 'sequence'  + str(i+1)


print(s)

['sequence1', 'ATGCACCGT', 'sequence3', 'GACCTAGCA']

我查看了维基百科上的 FASTA 规范。看起来长序列可以跨越多行。在那种情况下,我假设您希望将这些行连接起来。它还表示信息行以“>”开头,但也可以以“;”开头。假设文件足够小,可以完全读入内存,我想出了以下使用正则表达式的方法:

import re

regex = re.compile(r"[;>](?P<description>[^\n]*)\n(?P<sequence>[^;>]+)")

with open("datafile.txt","r") as f:

    sequences = regex.findall(f.read())
    for i, info in enumerate(sequences):
            description, sequence = info
            print("sequence%d: %s" % (i, sequence.replace("\n","")))