如何读取文件名并返回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)函数,完成以下要求:
- 读取指定文件
- 将首行作为FASTA头部(header)
- 后续序列去除空白字符,保留原换行格式
- 返回
[header, 完整序列]的列表结构 - 确保文件正确关闭
用户现有代码片段无法区分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
相关产品推荐
相关产品推荐

