从匹配对象中提取数据

2024-07-05 14:45:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很长的序列,其中有一个特定的字符串('say GAATTC')在整个序列字符串中随机重复多次。我目前正在使用正则表达式.span()提供模式“GAATTC”所在位置的索引。现在我想使用这些索引来分割G和A之间的模式(即“G | AATTC”)。你知道吗

如何使用match对象中的数据将它们切掉?你知道吗


Tags: 数据对象字符串match模式序列sayspan
2条回答

如果您想用“G | AATTC”替换“GAATTC”(不确定您最后想做什么),我认为您可以不用regex来处理这个问题:

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

相关问题 更多 >