为什么以下程序在python中返回1而不是2?
print "abcdcdc".count("cdc")
子串cdc出现在两个地方(一个从索引2开始,另一个从索引4开始)。 count()究竟是如何工作的?
答案 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。