2011-05-03 150 views
0

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

如何使用匹配对象中的数据将它们分割出来?

回答

0

如果你想要做的是通过更换'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] 
+0

我不想用'|'替换它。我想在给定的字符串中找到它(可以多次找到它),在G和AATTC之间切片,然后计算每个片段的长度以及相邻的序列。 – Eugene 2011-05-03 10:08:33

+0

好的,感谢您的回答,请参阅我的文章,并进行新的修改。 – Emmanuel 2011-05-03 10:18:12

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' 
>>>