python - 从 SRE_Match 对象获取跨度和匹配值 (Python)

标签 python regex object bioinformatics dna-sequence

我正在尝试在 DNA 序列中找到特定长度(范围为 4 到 12)的匹配项

代码如下:

import re
positions =[]
for i in range(4,12):
    for j in range(len(dna)- i+1):
        positions.append(re.search(dna[j:j+i],comp_dna))

#Remove the 'None' from the search
position_hits = [x for x in positions if x is not None]

我明白了:

[<_sre.SRE_Match object; span=(0, 4), match='ATGC'>,.........]

如何从 span 和 match 中提取值? 我试过 .group() 但它抛出了一个错误

AttributeError: 'list' object has no attribute 'group'

最佳答案

如果你想修复当前的方法,你可以使用

position_hits = [x.group() for x in positions if x]

您可以直接在for 循环中获取所有匹配项:

import re
position_hits = []
for i in range(4,12):
    for j in range(len(dna)-i+1):
        m = re.search(dna[j:j+i],comp_dna)
        position_hits.append(m.group())

关于python - 从 SRE_Match 对象获取跨度和匹配值 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51114168/

相关文章:

python - 解构时更改数据类型

python - 如何显示装饰器的原始参数

c++ - 匹配正则表达式线程不安全吗?

python - Matplotlib:是否可以在不创建子图的情况下创建具有给定 y 偏移量的新 Axis ?

python - 如何测试更快的 GUI 应用程序?

java - 解析文件java中的内括号

java - 当文本匹配时识别匹配的(子)正则表达式

javascript - 如何遍历对象数组以查找 ID 然后返回同级键

JavaScript 计算属性

ios - 指定 API 请求的参数