所以我几个月来一直在学习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)
谢谢!
答案 0 :(得分:4)
你可以这样做:
'banana'.count('ba')
字符串计数方法的文档说:
返回子字符串sub的非重叠出现次数 string S [start:end]。可选参数start和end是 解释为切片表示法。
示例输出:
>>> 'banana'.count('ba')
1
>>> 'banana'.count('na')
2