Open In App

Python | Prefix extraction before specific character

Sometimes, we might have a use case in which we need to find a prefix in a string. But sometimes, the requirement can be something dynamic like a specific input character than a number of elements for the decision of getting prefix. Let’s discuss certain ways in which we can find the prefix of a string before a certain character.

Method #1: Using rsplit()



This method originally performs the task of splitting the string from the rear end rather than the conventional left-to-right fashion. This can though be limited to 1, for solving this particular problem. 




# Python3 code to demonstrate working of
# Prefix extraction before specific character
# Using rsplit()
 
# initializing string
test_str = &quot
GeeksforGeeks & quot
 
# initializing split character
spl_char = &quot
r & quot
 
# printing original string
print(& quot
       The original string is : & quot
       + str(test_str))
 
# Using rsplit()
# Prefix extraction before specific character
res = test_str.rsplit(spl_char, 1)[0]
 
# printing result
print(& quot
       The prefix string is : & quot
       + str(res))

Output : 

The original string is : GeeksforGeeks
The prefix string is : Geeksfo

Time Complexity: O(n)
Space Complexity: O(n)

Method #2: Using rpartition() If we need to solve this particular problem, this inbuilt function is recommended to perform this particular task. This function performs the partition as required just once from the rear end. 




# Python3 code to demonstrate working of
# Prefix extraction before specific character
# Using rpartition()
 
# initializing string
test_str = &quot
GeeksforGeeks & quot
 
# initializing split character
spl_char = &quot
r & quot
 
# printing original string
print(& quot
       The original string is : & quot
       + str(test_str))
 
# Using rpartition()
# Prefix extraction before specific character
res = test_str.rpartition(spl_char)[0]
 
# printing result
print(& quot
       The prefix string is : & quot
       + str(res))

Output : 
The original string is : GeeksforGeeks
The prefix string is : Geeksfo

Time Complexity: O(n)
Space Complexity: O(n)

Method #3 : Using find() method.You can also use index() instead of find().




# Python3 code to demonstrate working of
# Prefix extraction before specific character
# Using find()
 
# initializing string
test_str = "GeeksforGeeks"
 
# initializing split character
spl_char = "r"
 
# printing original string
print("The original string is : " + str(test_str))
 
# Using find()
# Prefix extraction before specific character
ind=test_str.find(spl_char)
res = test_str[0:ind]
 
# printing result
print("The prefix string is : " + str(res))

Output
The original string is : GeeksforGeeks
The prefix string is : Geeksfo

Time Complexity: O(n)
Space Complexity: O(n)

Method #4: Using regex

This method uses python regex to find the prefix of a string before a certain character. It uses the re.split() function to split the string at the specified character.




import re
 
# initializing string
test_str = "GeeksforGeeks"
 
# initializing split character
spl_char = "r"
 
# printing original string
print("The original string is : " + str(test_str))
 
# Using regex
# Prefix extraction before specific character
res = re.split(spl_char, test_str)[0]
 
# printing result
print("The prefix string is : " + str(res))
#This code is contributed by Edula Vinay Kumar Reddy

Output
The original string is : GeeksforGeeks
The prefix string is : Geeksfo

This method uses the re.split() function to split the string at the specified character, which takes O(n) time and the output prefix string is a subset of the input string, so the auxiliary space is O(n)

Method 5: Using split(): 

We can split the string based on the specific character and then extract the first element of the resulting list.




def prefix_using_split(string, char):
    prefix = string.split(char)[0]
    return prefix
 
original_string = "GeeksforGeeks"
prefix_string = prefix_using_split(original_string, "f")
 
print("The original string is :", original_string)
print("The prefix string is :", prefix_string)

Output
The original string is : GeeksforGeeks
The prefix string is : Geeks

Time Complexity: O(n) (where n is the length of the string)
Space Complexity: O(n) (for the list created by split())

Method #6: Using rfind() and slicing




# initializing string
test_str = "GeeksforGeeks"
 
# initializing split character
spl_char = "r"
 
# finding the last index of the split character
last_index = test_str.rfind(spl_char)
 
# extracting the prefix string
prefix = test_str[:last_index]
 
# printing the prefix string
print("The prefix string is : " + prefix)

Output
The prefix string is : Geeksfo

Time Complexity: O(n) time complexity, where n is the length of the string test_str.
Auxiliary Space: O(1).


Article Tags :