如何读入fi中的特定行

2024-10-02 14:23:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

click for image

我想要这个:

sequence1: ATGCACCGT
sequence2: GACCTAGCA

因此。你知道吗

我该怎么做?你知道吗

编辑: 我会试着重新表述

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

我想把它读成两个不同的字符串 第一个字符串是第一个序列,第二个是第二个序列。你知道吗

但我不知道如何告诉pycharm我想读到>;符号,而不是其他字符串,直到下一个>;符号。。。你知道吗


Tags: 文件字符串gt编辑符号序列字符fasta
2条回答
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","")))

相关问题 更多 >