带有fasta头的python regex

2024-10-02 16:22:30 发布

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

我在python中使用regex时遇到了一些问题。我将如何捕获此字符串中“>”之后的所有内容?在

>4L type=chromosome; loc=6L:1.733034524; ID=4L; length=4534673; release=r2.32; species=Homo; CCAACATATTGTGCTAATGAGTGCCTCTCGTTCTCTGTCTTATATTACCG CAAACCCAAAAAGACAATACACGACAGAGAGAGAGAGCAGCGGAGATATT TAGATTGCCTATTAAATATGATCGCGTATGCGAGAGTAGTGCCAACATAT TGTGCTCTCTATATAATGACTGCCTCTCATTCTGTCTTATTTTACCGCAA

输出如下: 4L type=chromosome; loc=6L:1.733034524; ID=4L; length=4534673; release=r2.32; species=Homo; CCAACATATTGTGCTAATGAGTGCCTCTCGTTCTCTGTCTTATATTACCG CAAACCCAAAAAGACAATACACGACAGAGAGAGAGAGCAGCGGAGATATT TAGATTGCCTATTAAATATGATCGCGTATGCGAGAGTAGTGCCAACATAT TGTGCTCTCTATATAATGACTGCCTCTCATTCTGTCTTATTTTACCGCAA

编辑:我希望用重新匹配或者搜索在


Tags: 字符串gtidreleasetypelengthlocregex
3条回答

你不需要正则表达式。在第二个部分选择“>:

text = '>4L type=chromosome; loc=6L:1.733034524; ID=4L; length=4534673; 
release=r2.32; species=Homo;
CCAACATATTGTGCTAATGAGTGCCTCTCGTTCTCTGTCTTATATTACCG
CAAACCCAAAAAGACAATACACGACAGAGAGAGAGAGCAGCGGAGATATT
TAGATTGCCTATTAAATATGATCGCGTATGCGAGAGTAGTGCCAACATAT
TGTGCTCTCTATATAATGACTGCCTCTCATTCTGTCTTATTTTACCGCAA'

test = test.split('>')[1]

print(test)

要使用正则表达式提取所需的信息(忽略对正),请执行以下操作:

import re

text = '''>4L type=chromosome; loc=6L:1.733034524; ID=4L; length=4534673; 
release=r2.32; species=Homo;
CCAACATATTGTGCTAATGAGTGCCTCTCGTTCTCTGTCTTATATTACCG
CAAACCCAAAAAGACAATACACGACAGAGAGAGAGAGCAGCGGAGATATT
TAGATTGCCTATTAAATATGATCGCGTATGCGAGAGTAGTGCCAACATAT
TGTGCTCTCTATATAATGACTGCCTCTCATTCTGTCTTATTTTACCGCAA'''
# need . to match a new line.
result = re.search("\>(.*)", text, flags=re.DOTALL)
if result:
    print(result.groups(1))

打印以下内容:

^{pr2}$

所以,也许你需要去掉新行,也许用这样丑陋的东西:

result.groups(1)[0].replace("\n","")

因为读取的每个序列都是多行的(根据FASTA标准),正则表达式不太可能是最佳的工具。这是因为regex模式通常用于处理文件,逐行搜索特定模式,而FASTA中的头行和序列行通常不共享这样一个通用的格式/模式。在

你有没有试过看一个专门为提取FASTA记录而设计的工具?Biopython有一个专门用于处理FASTA/Q序列的module。在

相关问题 更多 >