在Python中计算子串 - 更有效的方法?

时间:2016-03-16 16:48:18

标签: python substring counting

所以我几个月来一直在学习Python。我遇到了一个练习,希望你计算一个子串在字符串中出现的次数。我搜索过,但找不到我想要的确切答案。这是我写的代码,它是功能性的。但是,由于异常,它确实需要一秒钟。我选择使用string.index,因为在某些单词中来自string.find的-1值会弄乱起点。什么是更有效的方式,而不导入其他模块等。在更基本的Python中,比如我写的代码。

word = "banana"
sub = "ba"
start = 0
ix = 0
count = 0
end = None

if end is None:
    end = len(word)
while start < end:
    if sub in word:
        try:
            ix = word.index(sub, start, end)
        except:
            break
        ix += 1
        start = ix + 1
        count += 1
print(count)

谢谢!

1 个答案:

答案 0 :(得分:4)

你可以这样做:

'banana'.count('ba')

字符串计数方法的文档说:

  

返回子字符串sub的非重叠出现次数   string S [start:end]。可选参数start和end是   解释为切片表示法。

示例输出:

>>> 'banana'.count('ba')
1
>>> 'banana'.count('na')
2