count()用于python中的连续子串

时间:2015-10-15 12:41:02

标签: python

为什么以下程序在python中返回1而不是2?

print "abcdcdc".count("cdc")

子串cdc出现在两个地方(一个从索引2开始,另一个从索引4开始)。 count()究竟是如何工作的?

4 个答案:

答案 0 :(得分:2)

我可以引用你

https://docs.python.org/3.4/library/stdtypes.html?highlight=count#str.count

  

str.count(sub[, start[, end]])

     

返回[start,end]范围内substring sub出现的非重叠次数。可选参数start和end被解释为切片表示法。

答案 1 :(得分:2)

count仅返回1,因为值cdc与自身重叠。

abcdcdc
  |-|
    |-|

要获得值2,您需要两个不重叠的cdc实例或使用正则表达式:

import re
len(re.findall('(?=cdc)', 'abcdcdc'))

答案 2 :(得分:1)

如果您想计算重叠的总出现次数,可以使用re模块执行此操作:

import re
text = 'abcdcdc'
len(re.findall('(?=cdc)', text))
>>> 2

答案 3 :(得分:0)

因为count()会返回子字符串的非重叠次数。请参阅Docs