VOOZH about

URL: https://www.geeksforgeeks.org/python/python-split-string-on-vowels/

⇱ Python - Split String on vowels - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Python - Split String on vowels

Last Updated : 2 Mar, 2023

Given a String, perform split on vowels. 

Example:

Input : test_str = 'GFGaBst' 
Output : ['GFG', 'Bst'] 
Explanation : a is vowel and split happens on that.

Input : test_str = 'GFGaBstuforigeeks' 
Output : ['GFG', 'Bst', 'f', 'r', 'g', 'ks']
Explanation : a, e, o, u, i are vowels and split happens on that.

Naive approach: 

  • Initialize variable vowels to contain all the vowels.
  • Initialize an empty list result and a variable temp to an empty string.
  • Iterate through each character in the input string test_str.
  • For each character, check if it is a vowel (by checking if it is in the vowels variable).
  • If the character is a vowel and the temp variable is not empty, append temp to the result list and reset temp to an empty string.
  • If the character is not a vowel, add it to the temp variable.
  • After the iteration, if the temp variable is not empty, append it to the result list.
  • Return the result list.

Output
['GFG', 'Bst', 'f', 'r', 'g', 'ks']

Time Complexity: O(N)
Auxiliary Space: O(N)

Method 1 : Using regex() + split()

In this, we use regex split() which accepts multiple characters to perform split, passing list of vowels, performs split operation over string.


Output
The original string is : GFGaBste4oCS
The splitted string : ['GFG', 'Bst', '4', 'CS']

Time Complexity: O(n), where n is the length of the string "test_str". The "re.split" function splits the string by searching for specified characters (vowels), which takes linear time proportional to the length of the string. 
Auxiliary space: O(1), as it uses a constant amount of memory regardless of the size of the input string "test_str".

Method 2 : Using replace() and split().

First replace all vowels in string with "*" and then split the string by "*" as delimiter


Output
The original string is : GFGaBste4oCS
The splitted string : ['GFG', 'Bst', '4', 'CS']

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

Method #3 : Using replace(),split() and ord() methods


Output
The original string is : GFGaBste4oCS
The splitted string : ['GFG', 'Bst', '4', 'CS']

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

Method #4 : Using operator.countOf() method


Output
['GFG', 'Bst', 'f', 'r', 'g', 'ks']

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

 Method5# :using the 'itertools.groupby 'function from the 'itertools' module


Output
The original string is: GFGaBste4oCS
The split string is: ['GFG', 'Bst', '4', 'CS']

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

Method #6: Using translate method

Algorithm:

  1. Initialize a string test_str.
  2. Create a translation table that replaces vowels with spaces using the str.maketrans() method.
  3. Apply the translation table to the test_str using the translate() method and store it in a variable named trans_str.
  4. Split the trans_str on spaces and store the result in a list named res.
  5. Print the result.

Output
The splitted string : ['GFG', 'Bst', '4', 'CS']

Time complexity: The time complexity of this code is O(n) because the maketrans(), translate() and split() methods take linear time.
Auxiliary Space: The space complexity of this code is O(n) because we are creating a new string and a new list to store the results.

Comment