2014-01-23 37 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'

+0

怎麼會這樣,而無需使用外部庫做了什麼? – KishB87

+2

're'是Python標準庫的一部分,所以它不會比'sys'或'os'更具外部性。 – SethMMorton

+0

根據@robertking的答案 - >''codexxcode'.count(「code」)'沒有正則表達式或模塊! –

0

使用正則表達式將公司招聘

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

計數工作可以在LEN(LI)被發現。

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