извлечение данных из совпадений - PullRequest
0 голосов
/ 03 мая 2011

У меня есть длинная последовательность с несколькими повторами определенной строки (скажем, GAATTC) случайным образом по всей строке последовательности. В настоящее время я использую регулярное выражение .span (), чтобы предоставить мне индексы того, где находится шаблон «GAATTC». Теперь я хочу использовать эти индексы, чтобы разделить шаблон между G и A (то есть 'G | AATTC').

Как использовать данные из объекта сопоставления для их выделения?

Ответы [ 2 ]

0 голосов
/ 03 мая 2011

Если я вас правильно понимаю, у вас есть строка и индекс, с которого начинается последовательность 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'
>>> 
0 голосов
/ 03 мая 2011

Если вы хотите заменить «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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...