Extract Strings with a Digit in Python



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 -

Open Compiler
# 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 -

Open Compiler
# 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 -

Open Compiler
# 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 -

Open Compiler
# 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: 2023-01-27T11:45:19+05:30

127 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements