Python Program to Extract Strings with a digit


In this article, we will learn how to extract strings with a digit in python.

Methods Used

The following are the various methods to accomplish this task −

  • Using list comprehension, any() and isdigit() functions

  • Using any(), filter() and lambda functions

  • Without using any built-in functions

  • Using ord() function

Example

Assume we have taken an input list containing strings. We will now extract strings containing a digit in an input list using the above methods.

Input

inputList = ['hello562', 'tutorialspoint', 'python20', 'codes', '100']

Output

List of Strings containing any digits:
['hello562', 'python20', '100']

In the above input list, the elements 'hello562', 'python20', '100' contain digits. Hence they are extracted from the input list.

Method 1: Using list comprehension, any() and isdigit() functions

Algorithm (Steps)

Following are the Algorithm/steps to be followed to perform the desired task –.

  • Create a variable to store the input list of strings

  • Print the input list.

  • Use the List comprehension to traverse through input list elements and check whether the string contains any digit character by character using any() function(returns True if any item in an iterable is true, else returns False) and isdigit() function

  • isdigit() function − If all of the characters are digits, the isdigit() method returns True; otherwise, it returns False.

  • Print the resultant list of Strings containing any digits.

Example

The following program returns a list that extracts the strings containing digits in an input list using list comprehension, any(), and isdigit() functions –

# input list of strings
inputList = ['hello562', 'tutorialspoint', 'python20', 'codes', '100']

# printing input list
print("Input list:", inputList)

# traversing through list elements and checking if the string

# contains any digit character
outputList = [item for item in inputList if any(c for c in item if c.isdigit())]

# printing resultant list of Strings containing any digits
print("List of Strings containing any digits:\n", outputList)

Output

On executing, the above program will generate the following output –

Input list: ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
List of Strings containing any digits:
['hello562', 'python20', '100']

Method 2: Using any(), filter() and lambda functions

filter() function − filters the specified sequence using a function that determines if each element in the sequence is to be true or false.

Lambda Function

A lambda function is an anonymous function that is small.

A lambda function can have an unlimited/any number of arguments but only one expression.

Syntax

lambda arguments : expression

Example

The following program returns a list that extracts the strings containing digits in an input list using any(), filter(), and lambda functions –

# input list of strings
inputList = ['hello562', 'tutorialspoint', 'python20', 'codes', '100']

# printing input list
print("Input list:", inputList)

# filtering the list elements if any string character is a digit
outputList = list(filter(lambda s: any( e for e in s if e.isdigit()), inputList))

# printing resultant list of Strings containing any digits
print("List of Strings containing any digits:\n", outputList)

Output

On executing, the above program will generate the following output –

Input list: ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
List of Strings containing any digits:
['hello562', 'python20', '100']

Method 3: Without using any built-in functions

replace() function − returns a copy of the string that replaces all occurrences of an old substring with another new substring.

Syntax

string.replace(old, new, count)

Example

The following program returns a list that extracts the strings containing digits in an input list without using any built-in functions –

# function that returns string with digits by accepting input string as an argument
def newFunction(str):
   
   # initializing all digits
   digitsStr= "0123456789"

   # storing the string passed to the function in a temp variable
   temp = str
   
   # traversing through each digit in the above digits string
   for d in digitsStr:
      
      # replacing that digit with space
      str = str.replace(d, "")
   
   # checking whether the length of the temp variable string is not equal to the passed string
   if(len(temp) != len(str)):
      
      # returning true if the condition is true
         return True
      
      # else returning false
         return False

# input list of strings
inputList = ['hello562', 'tutorialspoint', 'python20', 'codes', '100']

# printing input list
print("Input list:", inputList)

# empty list for storing list elements containing digits
outputList = []

# traversing through each element of the input list
for element in inputList:
   
   # checking whether the above defined newFunction() returns true
   if newFunction(element):
      
      # appending that element to the output list
         outputList.append(element)

# printing resultant list of Strings containing any digits
print("List of Strings containing any digits:\n", outputList)

Output

On executing, the above program will generate the following output –

Input list: ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
List of Strings containing any digits:
['hello562', 'python20', '100']

Method 4: Using the ord() function

ord() function − returns the Unicode code of a given character as a number.

Example

The following program returns a list that extracts the strings containing digits in an input list without using the ord() function –

# input list of strings
inputList = ['hello562', 'tutorialspoint', 'python20', 'codes', '100']

# printing input list
print("Input list:", inputList)

# empty list for storing list elements containing digits
outputList = []

# traversing through each element of the input list
for element in inputList:
   
   # traversing through each character of the current element
   for c in element:
      
      # checking whether the ASCII value of char is greater than or
      
      # equal to 0 and less than or equal to 9
      if(ord(c) >= ord('0') and ord(c) <= ord('9')):
         
         # appending that element to output list
            outputList.append(element)
         
         # breaking the loop
            break

# printing resultant list of Strings containing any digits
print("List of Strings containing any digits:\n", outputList)

Output

On executing, the above program will generate the following output –

Input list: ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
List of Strings containing any digits:
['hello562', 'python20', '100']

Conclusion

From the given list of strings, we have learned 4 different ways to extract string elements containing digits. We also learned how to filter the list according to the condition. We also learned that, rather than using nested lists, any() method inside the lambda function may be used to apply conditions.

Updated on: 27-Jan-2023

217 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements