The most common problem we have encountered in Python is splitting a string by a delimiter, But in some cases we have to split in different ways to get the answer. In this article, we will get substrings obtained by splitting string in different ways. Examples:
Input : Paras_Jain_Moengage_best
Output : [‘Paras’, ‘Paras_Jain’, ‘Paras_Jain_Moengage’, ‘Paras_Jain_Moengage_best’]
Input : chunky_2808_GFG_Codechef
Output : [‘chunky’, ‘chunky_2808’, ‘chunky_2808_GFG’, ‘chunky_2808_GFG_Codechef’]
Below are some ways to do the task.
Method #1: Using Iteration
Python3
# Python code to split string in substring manner # Input initialisation Input = "Geeks_for_Lazyroar_is_best" # Split initialise split_string = Input .split( '_' ) # Output list initialise Output = [] # Iteration for a in range ( len (split_string)): temp = split_string[:a + 1 ] temp = "_".join(temp) Output.append(temp) # print output print (Output) |
Time Complexity: O(n), where n is the length of the string.
Space Complexity: O(n), where n is the length of the string.
Method 2: Using Itertools
Python3
# Python code to split string in substring manner # Importing from itertools import accumulate # Input initialisation Input = "Geeks_for_Lazyroar_is_best" # Using accumulate Output = [ * accumulate( Input .split( '_' ), lambda temp1, temp2 : '_' .join([temp1, temp2])), ] # Printing output print (Output) |
Time complexity: O(n), where n is the length of the input string.
Auxiliary space: O(n), as we are creating a list to store the output of the accumulate function.
Method#3 : Using re module and string slicing
Python3
# Python code to split string in substring manner # Importing import re # Input initialisation Input = "Geeks_for_Lazyroar_is_best" # Using re module with string slicing to generate substring ans = [] for i in re.finditer( "(_)" , Input ): temp = Input [:i.span()[ 0 ]] ans.append(temp) # inserting last substring ans.append( Input ) # Printing output print (ans) |
Output:
['Geeks', 'Geeks_for', 'Geeks_for_Lazyroar', 'Geeks_for_Lazyroar_is', 'Geeks_for_Lazyroar_is_best']
Time complexity: O(n), where n is the length of the input string.
Auxiliary space: O(m), where m is the number of substrings generated.