Given a string, the task is to extract only alphabetical characters from a string. Given below are few methods to solve the given problem.
Method #1: Using re.split
# Python code to demonstrate # to get characters from string import re
# initialising string ini_string = "123()#$ABGFDabcjw"
ini_string2 = "abceddfgh"
# printing strings print ( "initial string : " , ini_string, ini_string2)
# code to find characters in string res1 = " " .join(re.split( "[^a-zA-Z]*" , ini_string))
res2 = " " .join(re.split( "[^a-zA-Z]*" , ini_string2))
# printing resultant string print ( "first string result: " , str (res1))
print ( "second string result: " , str (res2))
|
initial string : 123()#$ABGFDabcjw abceddfgh first string result: A B G F D a b c j w second string result: a b c e d d f g h
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, as the resultant string is stored in a variable.
Method #2: Using re.findall
# Python code to demonstrate # to get characters in string import re
# initialising string ini_string = "123()#$ABGFDabcjw"
ini_string2 = "abceddfgh"
# printing strings print ( "initial string : \n" , ini_string, "\n" , ini_string2)
# code to find characters in string res1 = " " .join(re.findall( "[a-zA-Z]+" , ini_string))
res2 = " " .join(re.findall( "[a-zA-Z]+" , ini_string2))
# printing resultant string print ( "first string result: " , str (res1))
print ( "second string result: " , str (res2))
|
initial string : 123()#$ABGFDabcjw abceddfgh first string result: ABGFDabcjw second string result: abceddfgh
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.
Method #3: Using isalpha()
# Python code to demonstrate # to get characters in a string # if present # initialising string ini_string = "123()#$ABGFDabcjw"
# printing string and its length print ( "initial string : " , ini_string)
# code to find characters in string res1 = ""
for i in ini_string:
if i.isalpha():
res1 = "".join([res1, i])
# printing resultant string print ( "first result: " , str (res1))
|
initial string : 123()#$ABGFDabcjw first result: ABGFDabcjw
Time complexity: O(n), where n is the length of the input string ini_string.
Auxiliary space: O(n), where n is the length of the input string ini_string.
Method #4 : Without any builtin methods
# Python code to demonstrate # to get characters in a string # if present # initialising string ini_string = "123()#$ABGFDabcjw"
lower = "abcdefghijklmnopqrstuvwxyz"
upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
a = lower + upper
# printing string and its length print ( "initial string : " , ini_string)
# code to find characters in string res1 = ""
for i in ini_string:
if i in a:
res1 + = i
# printing resultant string print ( "first result: " , str (res1))
|
initial string : 123()#$ABGFDabcjw first result: ABGFDabcjw
The time complexity of this program is O(n), where n is the length of the input string ini_string.
The auxiliary space required by the program is also O(n), since the program creates a new string res1 to store the characters that are present in the input string.
Method 5: Using list comprehension method
ini_string = "123()#$ABGFDabcjw"
a = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
res = [i for i in ini_string if i in a]
print ("".join(res))
|
ABGFDabcjw
Method 6: Using enumerate function
ini_string = "123()#$ABGFDabcjw"
a = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
res = [j for i,j in enumerate (ini_string) if j in a]
print ("".join(res))
|
ABGFDabcjw
Method #7: Using filter and lambda:
The filter function takes a function and a list-like object as input, and returns a list of elements from the input object for which the function returns True. In this case, the function is lambda x: x.isalpha(), which returns True for any alphabetical character and False for any non-alphabetical character. The join method is then used to concatenate the characters into a single string.
# Python code to demonstrate # to get characters in a string # if present def extract_characters(string):
#Using filter to get the characters
return "".join( filter ( lambda x: x.isalpha(), string))
# Test the function print (extract_characters( "123()#$ABGFDabcjw" )) # Output: ABGFDabcjw
print (extract_characters( "abceddfgh" )) # Output: abceddfgh
#This code is contributed by Edula Vinay Kumar Reddy |
ABGFDabcjw abceddfgh
Time complexity: O(n)
Auxiliary Space: O(n)
Method #8:Using itertools.filterfalse() method
# Python code to demonstrate # to get characters in a string # if present import itertools
def extract_characters(string):
#Using filter to get the characters
return "".join(itertools.filterfalse( lambda x: not x.isalpha(), string))
# Test the function print (extract_characters( "123()#$ABGFDabcjw" )) # Output: ABGFDabcjw
print (extract_characters( "abceddfgh" )) # Output: abceddfgh
|
ABGFDabcjw abceddfgh
Time Complexity: O(N)
Auxiliary Space: O(N)
Method #9:Using str.translate() with str.maketrans()
Here is an implementation using str.translate() with str.maketrans() to remove non-alphabetic characters from a given string:
Algorithm:
Initialize the input string to be extracted from.
Create a translation table using str.maketrans() method where the second argument is all the non-alphabetic characters to be removed from the input string.
Use the translate() method to remove the non-alphabetic characters from the input string using the created translation table.
Print the output string.
# Python code to extract only alphabetical characters from a given string using str.translate() with str.maketrans() # initializing input string input_string1 = "123()#$ABGFDabcjw"
input_string2 = "abceddfgh"
# creating translation table to remove non-alphabetic characters translation_table = str .maketrans(
" ", " ", " !@ #$%^&*()_-+={}[]|\:;\"'<>,.?/`~1234567890")
# removing non-alphabetic characters from input string using translate() output_string1 = input_string1.translate(translation_table)
output_string2 = input_string2.translate(translation_table)
# printing output print (output_string1)
print (output_string2)
|
ABGFDabcjw abceddfgh
Time Complexity: O(N)
Auxiliary Space: O(N)