如何计算一个序列在python的给定字符串中出现多少次?

时间:2018-10-07 16:11:20

标签: python python-3.x string iteration sequence

我试图计算一个序列出现在给定字符串中的次数。

def count_seqence(str, seq):
    count = 0
    if seq in str:
        count += 1
    return count
print(count_seqence("the quick brown fox jumps over the lazy dog","he"))

但这只能运行一次且不会循环,我如何循环并计算出现的次数,因为我知道循环将针对每个字符而不是一个序列,这使我感到困惑。

4 个答案:

答案 0 :(得分:4)

好吧,因为您使用if而不是循环使用,这意味着条件是True,因此您增加了count,或者是{{1} },那么您就不会执行主体。

如果要计算数字,则需要某种“循环”机制。这不必是明确的,例如False也会隐藏循环。但这只会导致inTrue

不重叠(Falsecount_seqence('aaaa', 'aa')

对于不重叠的计数,我们可以使用2

str.count

在这种情况下,定义特定功能当然是毫无用处的。请注意,以上内容仅统计不重叠匹配项。例如,当您在def count_seqence(text, seq): return text.count(seq) 中计算'aa'时,您将得到'aaaa',而不是2

重叠(3count_seqence('aaaa', 'aa')

对于重叠,我们将需要执行3,并更新“搜索窗口”,直到不再找到匹配项为止,例如:

str.find

因此,我们有一个def count_seqence(text, seq): cnt = 0 idx = text.find(seq) while idx >= 0: cnt += 1 idx = text.find(seq, idx+1) return cnt ,用于存储发生新匹配的索引,并且每次idx大于或等于idx(我们找到一个匹配项)时,我们都会递增0,然后将cnt更改为 next 匹配项。

答案 1 :(得分:3)

在字符串上使用count,它将返回找到参数值seq的时间

def count_seqence(str, seq):
    return str.count(seq)

print count_seqence("kjdsflsdnf lskmfldsknffsdlkfnsldkmf", "ds")

输出

2

答案 2 :(得分:2)

使用string.count方法。检查Python documentation

示例:

x = "wip wip I'm a sheep wip"
print(x.count("wip"))

答案 3 :(得分:0)

在字符串上使用count,它将返回找到参数值seq的时间

def count_seqence(str,seq):     返回str.count(seq)

print count_seqence(“ kjdsflsdnf