Count Digits in Python Strings

Count number of digits in a string

In this post, I am going to explain how to count the number of digits in a string with Python. I will explain how I extract the digits out Strings. This is common in the Data Science Domain.

I can count the number of digits with a simple for loop. I loop through all characters in a string and check if it is a digit. In my previous post Three words in python, I explained the isdigit function already. I make use of this function in this problem too. I increment a counter when the character is a digit. A very simple for loop.

text = "I am 1 string with 2 digits"
count = 0
for char in text:
    if char.isdigit():
        count += 1
print("the number of digits is: "  + str(count))

Python has list comprehensions. With the build in function sum I can do the same. The sum function requires an iterable as input parameter.

text = "I am 1 string with 2 digits"
count = sum(1 for x in text if x.isdigit())
print("the number of digits is: "  + str(count))

The sum function can operate on an array of Booleans too. A True value will act like a 1 and a False will act like a 0. Consider the following example.

result = sum([True,True,False])
print(result)   # This will print 2 

This results in the following result:

text = "I am 1 string with 2 digits"
count = sum(x.isdigit() for x in text)
print("the number of digits is: "  + str(count))

With regular expressions

I can also use the re package. The following example first removes all non digit characters. The remaining is a string with only characters. This means that I only have to take the length of the string to know how many digits are present in the string.

import re
text = "I am 1 string with 2 digits"
count = re.sub("\D", "", test_string) 
print("the number of digits is: "  + len(count))

The re package has a findall function. Here we can input a regular expression to count all digits.

len(re.findall('\d', text))

Bonus

As last one I also can make use of the built in String method count. Just count all digits in the string and add the numbers together with the sum method.

 return sum(text.count(digit) for digit in '1234567890')

There are several ways to count the number of digits in a string with Python. I showed some of them here. I hope these tips can help you with similar problems while coding.

About the author

I currently work as a Test Automation Consultant at b.ignited. Here I work for different clients in different industries to help them start and speed up their testing cycles

I’ve been testing software since 2000 when I became involved in testing telephone applications and hardware. Since then, I’ve been able to expand my experience by testing a variety of embedded, web, mobile and desktop applications. I have used various development methodologies from waterfall to agile.

I consider myself to be a lifelong learner.