我有一个很长的序列,在整个序列字符串中随机地重复一个特定的字符串('说GAATTC')。我目前使用正则表达式.span()向我提供模式'GAATTC'所在的索引。现在我想用这些索引来切割G和A之间的模式(即'G | AATTC')。从匹配对象中提取数据
如何使用匹配对象中的数据将它们分割出来?
我有一个很长的序列,在整个序列字符串中随机地重复一个特定的字符串('说GAATTC')。我目前使用正则表达式.span()向我提供模式'GAATTC'所在的索引。现在我想用这些索引来切割G和A之间的模式(即'G | AATTC')。从匹配对象中提取数据
如何使用匹配对象中的数据将它们分割出来?
如果你想要做的是通过更换'GAATTC“G | AATTC”一个(不知道你到底想要做什么),我认为你可以不用正则表达式管理此:
>>> 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]
如果我理解正确的话,你有串和索引,其中序列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'
>>>
我不想用'|'替换它。我想在给定的字符串中找到它(可以多次找到它),在G和AATTC之间切片,然后计算每个片段的长度以及相邻的序列。 – Eugene 2011-05-03 10:08:33
好的,感谢您的回答,请参阅我的文章,并进行新的修改。 – Emmanuel 2011-05-03 10:18:12