2011-05-03 7 views
0

시퀀스 문자열 전체에 특정 문자열 ('GAATTC'라고 함)이 여러 번 반복되는 긴 시퀀스가 ​​있습니다. 나는 현재 패턴 정규 표현식 .span()을 사용하여 'GAATTC'패턴이있는 곳의 색인을 제공합니다. 이제 그 색인을 사용하여 G와 A 사이의 패턴을 자르려고합니다 (즉 'G | AATTC').matchobjects에서 데이터 추출

어떻게 일치 객체의 데이터를 사용하여 슬라이스 할 수 있습니까? 싶은 것은하여 'GAATTC'를 대체 할 경우

답변

0

는 | (당신은 결국 뭘 원하는지 확실하지) '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

+0

답장을 보내 주셔서 감사합니다. 새 게시물을보고 수정되었습니다. – Emmanuel

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