我有一个很长的序列,在序列字符串中随机地重复多次特定字符串('说GAATTC')。我目前正在使用正则表达式.span()向我提供找到模式'GAATTC'的索引。现在我想用这些索引来切割G和A之间的模式(即'G | AATTC')。
如何使用匹配对象中的数据对这些数据进行切片?
答案 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'
>>>