You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何读取文件名并返回FASTA数据结构?(含DNA.txt解析需求)

处理FASTA格式DNA文件的Python函数实现

问题背景

现有DNA.txt文件,内容为FASTA格式的基因序列:

>HSGLTH1 Human theta 1-globin gene
CCACTGCACTCACCGCACCCGGCCAATTTTTGTGTTTTTAGTAGAGACTAAATACCATATAGTGAACACCTAAGA
CGGGGGGCCTTGGATCCAGGGCGATTCAGAGGGCCCCGGTCGGAGCTGTCGGAGATTGAGCGCGCGCGGTCCCGG
GATCTCCGACGAGGCCCTGGACCCCCGGGCGGCGAAGCTGCGGCGCGGCGCCCCCTGGAGGCCGCGGGACCCCTG
GCCGGTCCGCGCAGGCGCAGCGGGGTCGCAGGGCGCGGCGGGTTCCAGCGCGGGGATGGCGCTGTCCGCGGAGGA
CCGGGCGCTGGTGCGCGCCCTGTGGAAGAAGCTGGGCAGCAACGTCGGCGTCTACACGACAGAGGCCCTGGAAAG
GTGCGGCAGGCTGGGCGCCCCCGCCCCCAGGGGCCCTCCCTCCCCAAGCCCCCCGGACGCGCCTCACCCACGTTC
CTCTCGCAGGACCTTCCTGGCTTTCCCCGCCACGAAGACCTACTTCTCCCACCTGGACCTGAGCCCCGGCTCCTC
ACAAGTCAGAGCCCACGGCCAGAAGGTGGCGGACGCGCTGAGCCTCGCCGTGGAGCGCCTGGACGACCTACCCCA
CGCGCTGTCCGCGCTGAGCCACCTGCACGCGTGCCAGCTGCGAGTGGACCCGGCCAGCTTCCAGGTGAGCGGCTG
CCGTGCTGGGCCCCTGTCCCCGGGAGGGCCCCGGCGGGGTGGGTGCGGGGGGCGTGCGGGGCGGGTGCAGGCGAG
TGAGCCTTGAGCGCTCGCCGCAGCTCCTGGGCCACTGCCTGCTGGTAACCCTCGCCCGGCACTACCCCGGAGACT
TCAGCCCCGCGCTGCAGGCGTCGCTGGACAAGTTCCTGAGCCACGTTATCTCGGCGCTGGTTTCCGAGTACCGCT
GAACTGTGGGTGGGTGGCCGCGGGATCCCCAGGCGACCTTCCCCGTGTTTGAGTAAAGCCTCTCCCAGGAGCAGC
CTTCTTGCCGTGCTCTCTCGAGGTCAGGACGCGAGAGGAAGGCGC

需要实现get_DNA(name)函数,完成以下要求:

  1. 读取指定文件
  2. 将首行作为FASTA头部(header)
  3. 后续序列去除空白字符,保留原换行格式
  4. 返回[header, 完整序列]的列表结构
  5. 确保文件正确关闭

用户现有代码片段无法区分header和序列部分:

def get_DNA(name):
    with open(DNA.txt,'r') as dna:
        DNA_d = {}
        for line in dna:
            if line ????????
        return DNA_d

解决方案

以下是完整的实现代码:

def get_DNA(name):
    header = ""
    sequence_lines = []
    with open(name, 'r') as dna_file:
        for line in dna_file:
            stripped_line = line.strip()
            # 跳过空行
            if not stripped_line:
                continue
            # 判断是否为FASTA头部行
            if stripped_line.startswith('>'):
                # 保留原头部格式,仅去除末尾换行符
                header = line.rstrip('\n')
            else:
                # 去除序列行的空白字符,保留原换行结构
                sequence_lines.append(stripped_line + '\n')
    # 拼接序列行并去除最后多余的换行符
    full_sequence = ''.join(sequence_lines).rstrip('\n')
    return [header, full_sequence]

代码说明

  • 自动文件管理:使用with open(...)上下文管理器,无需手动调用close(),确保文件读取后自动关闭。
  • 头部识别:通过判断行是否以>开头,识别FASTA头部,保留原格式。
  • 序列处理:遍历序列行,去除首尾空白后添加换行符,保证序列的换行结构与原文件一致;最后拼接成完整序列字符串,去除末尾多余的换行。
  • 返回结构:返回包含header和完整序列的列表,完全符合预期输出格式。

内容的提问来源于stack exchange,提问作者starbucksdoubleshot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 06:35:48