从matchobjects中提取数据

时间:2011-05-03 09:29:12

标签: python regex bioinformatics

我有一个很长的序列,在序列字符串中随机地重复多次特定字符串('说GAATTC')。我目前正在使用正则表达式.span()向我提供找到模式'GAATTC'的索引。现在我想用这些索引来切割G和A之间的模式(即'G | AATTC')。

如何使用匹配对象中的数据对这些数据进行切片?

2 个答案:

答案 0 :(得分:0)

如果您想要做的是用'G | AATTC'取代'GAATTC'(不知道您最终想做什么),我认为您可以在没有正则表达式的情况下管理它:

>>> string = 'GAATTCAAGAATTCTTGAATTCGAATTCAATATATA'
>>> string.replace('GAATTC', 'G|AATTC')
'G|AATTCAAG|AATTCTTG|AATTCG|AATTCAATATATA'

编辑:好的,这种方式可以适应你想做的事情:

>>> groups = string.replace('GAATTC', 'G|AATTC').split('|')
>>> groups
['G', 'AATTCAAG', 'AATTCTTG', 'AATTCG', 'AATTCAATATATA']
>>> map(len, groups)
[1, 8, 8, 6, 13]

答案 1 :(得分:0)

如果我理解正确,你有字符串和序列GAATTC开始的索引,所以你需要这个(i这里是组的m.start)吗?

>>> seq = "GAATTC"
>>> s = "AATCCTGAGAATTCAAC"
>>> i = 8    # the index where seq starts in s
>>> s[i:]
'GAATTCAAC'
>>> s[i:i+len(seq)]
'GAATTC'

提取它。您也可以像这样在G切片原始序列:

>>> s[:i+1]
'AATCCTGAG'
>>> s[i+1:]
'AATTCAAC'
>>>