count()方法如何工作?

时间:2018-04-22 15:58:46

标签: python

我知道str.count(sub)会返回substring sub的出现次数。 但是我遇到了一个我无法理解的奇怪问题 我的代码如下:

str = 'helloworld'
print(str.count(''))
>>>11

输出令人费解。它为什么返回11? 如果''表示任何字母,为什么不返回它的长度(10)? 我没有找到任何关于此的答案。 有人可以告诉我实施情况吗?

1 个答案:

答案 0 :(得分:6)

''并不意味着任何字符串,它意味着 no 字符串(也就是空字符串或0长度字符串)。严格地说,字符串中有无限数量的0长度字符串,但实际上,返回len(string) + 1 - 一个用于第一个字符之前,一个用于每个字符之后。

此方案在count.h中已明确特殊:

if (sub_len == 0)
    return (str_len < maxcount) ? str_len + 1 : maxcount;

当搜索字符串为空字符串时,默认返回len(string) + 1