2014-01-23 5 views
0

문자열에서 하위 문자열을 검색하는 효율적인 방법은 무엇입니까? - 우리가 사용할 수있는 Python으로 빌드 된 특정 함수가 있습니까? - 목록으로 변환 한 다음 목록의 요소에 액세스 할 수 있습니까? - for 루프를 사용하여 개별 요소를 검색 할 수 있습니까? - Python 프로그래머가 일반적으로 받아 들일 수있는 방법이 있습니까?Python으로 문자열을 검색하는 전략은 무엇입니까?

나에게 다음과 같은 문제를 해결하기 위해 서로 다른 전략을 이해하는 것이 도움이 될 것입니다 :

반환 우리가에 대한 편지를 받아 들일 겁니다 제외하고 문자열 "code"가, 지정된 캐릭터 어디서나 나타나는 횟수 'd'이므로 "cope""cooe"입니다.

count_code('aaacodebbb') → 1 
count_code('codexxcode') → 2 
count_code('cozexxcope') → 2 

답변

2

당신은 regex를 사용할 수 있습니다

다음
>>> import re 
def count(s): 
    return sum(1 for m in re.finditer(r'co.e', s)) 
... 
>>> count('aaacodebbb') 
1 
>>> count('codexxcode') 
2 
>>> count('cozexxcope') 
2 

. 일치하는 모든 문자를, 당신은 다음 r'co[a-zA-Z]e'을 사용하여 알파벳을 일치합니다. this-

import re 
regex = re.compile(r'co[a-z]e') 
li = regex.findall("cozexxcope")   #Output: ['coze', 'cope'] 

백작을 위해 일하는 것이 정규 표현식을 사용

+0

어떻게하면 외부 라이브러리를 사용하지 않고도이 작업을 수행 할 수 있습니까? – KishB87

+2

're'는 파이썬 표준 라이브러리의 일부이므로'sys' 나'os'보다 더 이상 외부적인 것이 아닙니다. @robertking의 답변에 따라 – SethMMorton

+0

이 있습니다 ->' 'codexxcode'.count ("code")'정규식이나 모듈이 전혀 없습니다! –

0

는 LEN (리) 찾을 수 있습니다.

0
def count_code(str): 
     count = 0 #set count to 0 initially 
     #For loops number of times that there are chars 
     for i in range(len(str)-1): 
     #looks for "co", [any char] and "e" 
     if str[i:i+2] == "co" and str[i+3:i+4] == "e": 
      #add up the number of times this happens and return it 
      count+= 1 
    return count 
+1

이전에 그것을 결코 알아 채지 못했습니다. 코드를 제공하는 것 외에도,이 코드가 작동하는 방법/방법과 왜이 접근법을 사용했는지 OP에 설명해야합니다. – nbryans

관련 문제