Python: Count Number of Occurrences in a String (4 Ways!)

Python Count Occurrences in a String Cover Image

In this post, you’ll learn how to use Python to count the number of occurrences in a string. You’ll learn four different ways to accomplish this, including: the built-in string .count() method and the fantastic counter module.

Knowing how to do this is an incredibly useful skill, allowing you to find, say, duplicate values within a string or deleting unwanted characters (such as special characters).

The Easy Solution: Using String .count()

>>> a_string = 'the quick brown fox jumps over the lazy dog'
>>> print(a_string.count('o'))
4

Count Number of Occurrences in a String with .count()

One of the built-in ways in which you can use Python to count the number of occurrences in a string is using the built-in string .count() method. The method takes one argument, either a character or a substring, and returns the number of times that character exists in the string associated with the method.

This method is very simple to implement. In the example below, we’ll load a sample string and then count the number of times both just a character and a substring appear:

>>> a_string = 'the quick brown fox jumps over the lazy dog'
>>> print('o appears this many times: ', a_string.count('o'))
>>> print('the appears this many times: ', a_string.count('the'))

o appears this many times:  4
ui appears this many times:  2

In the example above you used the built-in string .count() method to count the number of times both a single character and a string appeared in a larger string.

Count Number of Occurrences in a Python String with Counter

In order to find a more flexible and efficient way to count occurrences of a character in a Python string, you can also use the Counter object from the built-in collections module. The module provides a number of help classes to work with, well, collections of different items.

In this case, our collection will be a string: 'the quick brown fox jumps over the lazy dog'.

from collections import Counter

a_string = 'the quick brown fox jumps over the lazy dog'
collection = Counter(a_string)

print(collection)

# Returns: Counter({' ': 8, 'o': 4, 'e': 3, 't': 2, 'h': 2, 'u': 2, 'r': 2, 'q': 1, 'i': 1, 'c': 1, 'k': 1, 'b': 1, 'w': 1, 'n': 1, 'f': 1, 'x': 1, 'j': 1, 'm': 1, 'p': 1, 's': 1, 'v': 1, 'l': 1, 'a': 1, 'z': 1, 'y': 1, 'd': 1, 'g': 1})

What we’ve accomplished in the code above is the following:

  1. We imported Counter from the collections module
  2. We then assigned our string to the variable a_string
  3. We passed the string into a Counter object and called it collection
  4. Finally, we printed the new collection object

What you can see is that what’s returned is a Counter object. We can confirm this by running print(type(collection)) which returns <class 'collections.Counter'>.

What’s great about this class is that it contains a dictionary-like element that contains occurrences of every iterable item in the item that was passed in.

What this means is that we can access the occurrences of different items in our object by passing in a dictionary accessor.

In the example below, let’s see how we can see how often the letters a and e occur:

>>> print(collection['a'])
>>> print(collection['e'])

1
3

This is the magic of the Counter class: it lets you easily access the count of occurrences in Python iterables, such as string.

Check out some other Python tutorials on datagy, including our complete guide to styling Pandas and our comprehensive overview of Pivot Tables in Pandas!

Use Regular Expressions (Regex) to Count Occurrences in a Python String

You can also use regular expressions (regex) to count the number of occurrences within a Python string. This approach is a little overkill, but if you’re familiar with regex, it can be an easy one to implement!

We’ll use the regular expression module, specifically the .findall() method to load the indices of where the character or substring occurs. Finally, we’ll use Python’s built-in len() function to see how often the character or substring occurs.

Let’s see how this works:

>>> import re

>>> a_string = 'the quick brown fox jumps over the lazy dog'
>>> print(len(re.findall('o', a_string)))

4

We can see that this approach is a bit of an odd way of doing things, especially when compared to the two methods above, covering the built-in .count() method and the built-in Counter class from collections.

Finally, let’s see how we can count occurrences using a for loop.

Use a For Loop to Count Occurrences in a Python String

Using a for loop in Python to count occurrences in a string is a bit of a naive solution, but it can come in handy at times.

The way it works, is that lists are items which you can iterate over (or, often called, iterables), meaning you can loop over each character in a string and count whether a character occurs or not.

Let’s implement the example below and then take a look at how we’ve accomplished everything:

a_string = 'the quick brown fox jumps over the lazy dog'

count_o = 0

for character in a_string:
    if character == 'o':
        count_o += 1
    else:
        pass

print(count_o)

# Returns: 4

What we’ve done here is:

  1. Initialized a new list
  2. Set the variable count_o to 0
  3. Looped over each character in the string and assessed if it’s equal to o. If it is, we increase the count_o variable by 1. Otherwise, we do nothing.

This solution works, but it’s a bit tedious to write out and it’s not very fast for larger string.

Conclusion

In this post, you learned how to use Python to count occurrences in a string using four different methods. In particular you learned how to count occurrences in a string using the built-in .count() method, the Counter class from collections, the .findall() method from regular expression’s re, as well as how to use a for loop.

If you want to learn more about the Counter class, check out the official documentation here.