w3resource

Python: Separate parentheses groups


Split Matched Parentheses Groups

Given a string consisting of whitespace and groups of matched parentheses, write a Python program to split it into groups of perfectly matched parentheses without any whitespace.

Input: 
( ()) ((()()())) (()) ()
Output:
['(())', '((()()()))', '(())', '()']

Input:
() (( ( )() (   )) ) ( ())
Output:
['()', '((()()()))', '(())']

Sample Solution:

Python Code:

# Define a function named 'test' that separates parentheses groups from a combined string
def test(combined):
    # Initialize an empty list 'ls' to store separate parentheses groups
    ls = []
    
    # Initialize an empty string 's2' to build each parentheses group
    s2 = ""
    
    # Iterate through each character in the combined string (ignoring spaces)
    for s in combined.replace(' ', ''):
        # Append the character to 's2'
        s2 += s
        
        # Check if the count of "(" equals the count of ")"
        if s2.count("(") == s2.count(")"):
            # Append the current parentheses group to the list 'ls'
            ls.append(s2)
            
            # Reset 's2' for the next parentheses group
            s2 = ""
    
    # Return the list of separate parentheses groups
    return ls

# Example 1
combined1 = '( ()) ((()()())) (()) ()'
print("Parentheses string:")
print(combined1)
print("Separate parentheses groups of the said string:")
print(test(combined1))

# Example 2
combined2 = '() (( ( )() (   )) ) ( ())'
print("\nParentheses string:")
print(combined2)
print("Separate parentheses groups of the said string:")
print(test(combined2))

Sample Output:

Parentheses string:
( ()) ((()()())) (()) ()
Separate parentheses groups of the said string:
['(())', '((()()()))', '(())', '()']

Parentheses string:
() (( ( )() (   )) ) ( ())
Separate parentheses groups of the said string:
['()', '((()()()))', '(())']

Flowchart:

Flowchart: Python - Separate parentheses groups.

For more Practice: Solve these Related Problems:

  • Write a Python program to split a string into groups of perfectly matched parentheses by removing whitespace.
  • Write a Python program to use a stack to partition a string of nested parentheses into separate balanced groups.
  • Write a Python program to implement a regular expression that captures groups of matched parentheses without extra spaces.
  • Write a Python program to iterate over a string and extract each valid group of nested parentheses as a separate element.

Go to:


Previous: Find the closest palindrome.
Next: Find a palindrome of a given length containing a given string.

Python Code Editor :

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.