2012-01-11 5 views
1

초기 문자열이 나온 후 다양한 문자열 반복을 찾아야하는 문제에 대해서는 데이터 파일에 다음과 같은 시퀀스가 ​​포함되도록 ACTGAC을 사용한다고 가정합니다.파이썬에서 다음 10 개 문자로 다양한 문자열 반복 찾기.

그래서 그 문자열에 우리가 ACTGAC을 발견하면 AAACTGACACCATCGATCAGAACCTGA는 내가 몇 가지 규칙에 의해 이동 문자열의 반복을위한 다음 10 개 개의 문자를 분석 할 필요가있다. 코딩 된 규칙이 있지만 누구나 내가 필요한 문자열을 찾은 후 어떻게 분석하여 다음 10자를위한 하위 문자열을 만들 수 있는지 보여 줄 수 있습니다. str.partition 함수가 문자열을 찾으면이를 수행 할 수 있다는 것을 알고 있으며 [1:10]은 다음 10 개의 문자를 얻을 수 있습니다.

감사합니다.

답변

4

거의 이미 있습니다 (단, 인덱스는 부터 0부터까지 계산됩니다).

partition 메서드는 separator의 첫 번째 발생을 기준으로 문자열을 head, separator, tail으로 분할합니다.

그래서 당신은 단지 tail의 처음 10 개 문자 조각을해야합니다

>>> data = 'AAACTGACACCATCGATCAGAACCTGA' 
>>> head, sep, tail = data.partition('ACTGAC') 
>>> tail[:10] 
'ACCATCGATC' 

파이썬은 당신이 제로에 기본적으로 슬라이스의 시작 인덱스 (생략 할 수 있습니다 -의 시작을 문자열) 및 end-index (기본값은 문자열 길이입니다). 당신은 또한 다음과 같이 한 줄에 모든 작업을 할 수

참고 :

>>> data.partition('ACTGAC')[2][:10] 
'ACCATCGATC' 
+0

덕분에 많이! 그게 내가 찾고 있던거야. – dhillonv10

+0

string.partition() "** sep의 ** 첫 번째 ** 발생시 문자열 분할"을 염두에 두십시오. 구분 기호 또는 중복되는 구분 기호가 여러 개인 경우 다음을 살펴보십시오. http://stackoverflow.com/questions/4664850/find-all-occurrences-of-a-substring-in-python – HongboZhu

0

그래서, Find all occurrences of a substring in Python에서 marcog의 답변에 따라, 나는 제안 :

>>> import re 
>>> data = 'AAACTGACACCATCGATCAGAACCTGAACTGACTGACAAA' 
>>> sep = 'ACTGAC' 
>>> [data[m.start()+len(sep):][:10] for m in re.finditer('(?=%s)'%sep, data)] 
['ACCATCGATC', 'TGACAAA', 'AAA'] 
관련 문제