Given a string containing numbers and alphabets, the task is to write a Python program to separate alphabets and numbers from a string using regular expression.
Examples
Input: abcd11gdf15hnnn678hh4
Output: 11 15 678 4abcd gdf hnnn hh
Explanation: The string is traversed from left to right and number and alphabets are separated from the given string .
Separate alphabets and numbers from a string using findall
In Python, we should import the regex library to use regular expressions. The pattern [0-9]+ is used to match the numbers in the string. Whereas ‘[a-zA-Z]’ is used to find all alphabets from the given string. We use the findall(Pattern, String) method that returns a list of all non-overlapping matches of the given pattern or regular expression in a string.
Python3
import re # Function to separate the numbers # and alphabets from the given string def separateNumbersAlphabets( str ): numbers = re.findall(r '[0-9]+' , str ) alphabets = re.findall(r '[a-zA-Z]+' , str ) print ( * numbers) print ( * alphabets) # Driver code str = "adbv345hj43hvb42" separateNumbersAlphabets( str ) |
Output:
345 43 42
adbv hj hvb
Time complexity: O(n), where n is the length of the input string.
Auxiliary space: O(d + a), where n is the length of the input string, d is the number of digits, and a is the number of alphabets in the input string.
Filter alphabets and numbers from a string using split
The split(pattern, string) method splits the string together with the matched pattern, parses the string from left to right, and then produces a list of the strings that fall between the matched patterns.
Python3
import re def separateNumbersAlphabets( str ): numbers = [] alphabets = [] res = re.split( '(\d+)' , str ) for i in res: if i > = '0' and i < = '9' : numbers.append(i) else : alphabets.append(i) print ( * numbers) print ( * alphabets) str = "Lazyroar456for53Lazyroar" separateNumbersAlphabets( str ) |
Output:
456 53
Lazyroar for Lazyroar
Time complexity: O(n), where n is the length of the input string
Auxiliary space: O(n)
Separate alphabets and numbers using isalpha()
and isnumeric()
Step-by-step approach:
- Create two empty strings for storing the alphabets and numbers.
- Iterate through each character in the given string using a for loop.
- Check if the character is an alphabet or a number using the isalpha() and isnumeric() functions respectively.
- If the character is an alphabet, append it to the alphabets string. If it is a number, append it to the numbers string.
- Print the final alphabets and numbers strings.
Below is the implementation of the above approach:
Python3
def separateNumbersAlphabets( str ): # Create empty strings for storing the alphabets and numbers numbers = '' alphabets = '' # Iterate through each character in the given string for char in str : # Check if the character is an alphabet if char.isalpha(): # If it is an alphabet, append it to the alphabets string alphabets + = char # Check if the character is a number elif char.isnumeric(): # If it is a number, append it to the numbers string numbers + = char # Print the final alphabets and numbers strings print (numbers) print (alphabets) # Driver code str = "adbv345hj43hvb42" separateNumbersAlphabets( str ) |
3454342 adbvhjhvb
Time complexity: O(n), where n is the length of the given string.
Auxiliary space: O(n), for storing the alphabets and numbers strings.
Separate alphabets and numbers in a string Using List Comprehension
- Take the input string from the user.
- Use list comprehension to create two lists – one for alphabets and one for numbers, by iterating over each character of the input string and checking whether it is an alphabet or a digit.
- Join the alphabets and numbers lists using a space separator to obtain the final output string.
- Print the output string.
Python3
# Take input string from the user string = "abcd11gdf15hnnn678hh4" # Use list comprehension to separate alphabets and numbers alphabets_list = [char for char in string if char.isalpha()] numbers_list = [char for char in string if char.isdigit()] # Join the lists with a space separator alphabets = ' ' .join(alphabets_list) numbers = ' ' .join(numbers_list) # Print the result print ( "Alphabets and numbers in the string are:" , alphabets, numbers) |
Alphabets and numbers in the string are: a b c d g d f h n n n h h 1 1 1 5 6 7 8 4
Time Complexity: O(n), where n is the length of the input string.
Auxiliary Space: O(n), where n is the length of the input string.