有条件地读取 python 中的文件内容

Read file contents in python conditionally

我正在尝试从 python 中的基因组文件中读取一条染色体序列。基因组文件的格式如下,但每条染色体的序列行更多:

Chr1

ATCGTGTGATGGTGCGTAGATGCTGAT

GCTGATGTGTCGAGCGATGCTGAGTCG

Chr2

TGCGTGATGCTGAGCGATGCTGATGCT

TAGCTGACCACACACCTGTTTGTAGG

Chr3

CAGTCGTAGCGATGCTGATGATGCTGA

GGTTGGTTGGCGGACCACCATTACTAT

我使用下面的代码读取全基因组序列。但是,我只想要一条染色体的序列(例如 Chr2 的整个序列)。除了读取整个基因组,然后搜索 Chr2 的模式,我还有其他方法可以做到这一点吗?

谢谢

   with open("genome.txt") as f:
       for line in f:
           genome.append(line.rstrip())

打开文件并逐行阅读,直到找到 'Chr2'.

消耗所有 non-empty 行,直到到达 EOF 或任何以 'Chr'

开头的行
def getgenomes(gfile):
    g = []
    for line in gfile:
        if line.startswith('Chr'):
            break
        if (line := line.strip()):
            g.append(line)
    return g

with open('genome.txt', encoding='utf-8') as gfile:
    genomes = None
    for line in gfile:
        if line.startswith('Chr2'):
            genomes = getgenomes(gfile)
            break
    print(genomes)

输出:

['TGCGTGATGCTGAGCGATGCTGATGCT', 'TAGCTGACCACACACCTGTTTTGTAGG']
Is_Chr2 = False

with open("genome.txt") as f:
   for line in f:
       if Is_Chr2: genome.append(line.rstrip())
       if line.rstrip() == "Chr2": Is_Chr2 = True
       else if line.rstrip()[:2] == "Chr" and Is_Chr2: break