通过字符串查找子字符串

时间:2013-10-30 23:23:26

标签: python string count substring

如果我使用替代字符串和子字符串,此代码似乎有效,但只要一个字母连续出现两次此函数翻转,有人可以纠正我吗? 我希望它返回True或False,具体取决于子字符串是否出现'n'或更多次!

def nCount(s,substr,n):
    count = 0
    for i in s:
        if len(s[s.index(i):]) >= len(substr):
            print s[s.index(i):(s.index(i)+(len(substr)))]
            if (s[s.index(i):(s.index(i)+(len(substr)))] == substr):

                count += 1
    if (count >= n):
        return True
    return False

print nCount("Mississippi", "si", 3)

2 个答案:

答案 0 :(得分:4)

我看不出这种算法有任何意义。 for i in s将遍历"Mississippi"中的所有字母。 s.index(i)将返回每个此类字母的第一个索引。所以,那将是0,1,2,2,1,2,2,1,8,8,1。我无法想象你能做些什么有用的事。

当您需要索引和值时,而不是尝试从值(难以或不可能)或索引中的值计算索引(这很容易,但很乏味),只需使用{{3} }。这就是它的用途:

for index, i in enumerate(s):

然后,您正在进行的任何地方s.index(i),只需使用index


当然,使用字符串enumerate方法解决这个问题很简单。

def nCount(s, subst, n):
    return s.count(substr) >= n

答案 1 :(得分:0)

正则表达式更容易:

import re

def nCount(s, subst, n):
    return len(re.findall(subst, s))>=n

print nCount("Mississippi", "si", 3)    # False
print nCount("Mississippi", "si", 2)    # True