Skip to main content
 首页 » 编程设计

python之在 Python 中提取序列

2025年05月04日31rubylouvre

我有一个看起来像这样的文件:

>sequence_name_16hj51 
CAACCTTGGCCAT 
>sequence_name_158ghni52 
AATTGGCCTTGGA 
>sequence_name_468rth 
AAGGTTCCA 

我想得到这个: ['CAACCTTGGCCAT', 'AATTGGCCTTGGA', 'AAGGTTCCA']

我有一个包含所有序列名称的列表,标题为 title_finder。当我尝试使用时:

for i in range(0,len(title_finder)): 
    seq = seq.split(title_finder[i]) 
    print seq 

我得到这个回溯:

Traceback (most recent call last): 
  File "D:/Desktop/Python/consensus new.py", line 23, in <module> 
    seq = seq.split(title_finder[i]) 
AttributeError: 'list' object has no attribute 'split' 

有人可以帮帮我吗?

编辑:有时一些序列跨越多行,因此当我使用 for 循环执行此操作时,我会得到不止一个字符串。

请您参考如下方法:

如果你从事生物信息学,你真的应该考虑安装 BioPython .

from Bio import SeqIO 
with open('your_file.fasta') as f: 
    return [str(record.seq) for record in SeqIO.parse(f, "fasta")] 

如果你想用纯 Python 来做,那么这个就可以了:

with open('your_file.fasta') as f: 
    print [line.rstrip() for line in f if not line.startswith('>')]