liberal liberal - 24 days ago 6
Python Question

Why are string.count('') and len(string) giving different output in python 3.5?

Look at following code and Please explain why count() and len() functions are giving two different outputs.

a=''
print(len(a))
print(a.count(''))


output:

0
1

Answer

str.count() counts non-overlapping occurrences of the substring:

Return the number of non-overlapping occurrences of substring sub.

There is exactly one such place where the substring '' occurs in the string '': right at the start. So the count should return 1. Generally speaking, the empty string will match at all positions in a given string, including right at the start and end, so the count should always be the length plus 1:

>>> (' ' * 100).count('')
101

That's because empty strings are considered to exist between all the characters of a string; so for a string length 2, there are 3 empty strings; one at the start, one between the two characters, and one at the end.

So yes, the results are different and they are entirely correct.