Open In App

Python | Extract Numbers in Brackets in String

Sometimes, while working with Python strings, we can have a problem in which we have to perform the task of extracting numbers in strings that are enclosed in brackets. Let’s discuss the certain ways in which this task can be performed. 

Method 1: Using regex The way to solve this task is to construct a regex string that can return all the numbers in a string that has brackets around them. 






# Python3 code to demonstrate working of
# Extract Numbers in Brackets in String
# Using regex
import re
 
# initializing string
test_str = "gfg is [1] [4] all geeks"
 
# printing original string
print("The original string is : " + test_str)
 
# Extract Numbers in Brackets in String
# Using regex
res = re.findall(r"\[\s*\+?(-?\d+)\s*\]", test_str)
 
# printing result
print("Extracted number list : " + str(res))

Output : 
The original string is : gfg is [1] [4] all geeks
Extracted number list : ['1', '4']

Time Complexity: O(N), where N is the length of the given string.
Space Complexity: O(N)



Method 2 : Using startswith(), endswith() and replace() methods

Initially split the string. Iterate over the list after splitting, check for strings in the list that start with “[” and end with”]”.If found remove those square braces and check whether the string after removing braces is numeric or not.




# Python3 code to demonstrate working of
# Extract Numbers in Brackets in String
 
# initializing string
test_str = "gfg is [1] [4] all geeks"
 
# printing original string
print("The original string is : " + test_str)
 
# Extract Numbers in Brackets in String
x=test_str.split()
res=[]
for i in x:
    if i.startswith('[') and i.endswith(']') :
        a=i.replace('[','')
        a=a.replace(']','')
        if a.isdigit():
            res.append(a)
# printing result
print("Extracted number list : " + str(res))

Output
The original string is : gfg is [1] [4] all geeks
Extracted number list : ['1', '4']

Time Complexity: O(N), where N is the length of the given string.
Space Complexity: O(N)

Method 3 : Using find() and replace() methods




# Python3 code to demonstrate working of
# Extract Numbers in Brackets in String
 
# initializing string
test_str = "gfg is [1] [4] all geeks"
 
# printing original string
print("The original string is : " + test_str)
 
# Extract Numbers in Brackets in String
x=test_str.split()
res=[]
for i in x:
    if i.find('[')==0 and i.find(']')==len(i)-1 :
        a=i.replace('[','')
        a=a.replace(']','')
        if a.isdigit():
            res.append(a)
# printing result
print("Extracted number list : " + str(res))

Output
The original string is : gfg is [1] [4] all geeks
Extracted number list : ['1', '4']

Time Complexity: O(N), where N is the length of the given string.
Auxiliary Space: O(N)

Method 4: Using split() and isdigit() methods

Step-by-step approach:

Below is the implementation of the above approach:




# Python3 code to demonstrate working of
# Extract Numbers in Brackets in String
# Using split() and isdigit() methods
 
# initializing string
test_str = "gfg is [1] [4] all geeks"
 
# printing original string
print("The original string is : " + test_str)
 
# Extract Numbers in Brackets in String
# Using split() and isdigit() methods
num_list = []
for substring in test_str.split("["):
    if "]" in substring:
        num = substring.split("]")[0]
        if num.isdigit():
            num_list.append(int(num))
 
# printing result
print("Extracted number list : " + str(num_list))

Output
The original string is : gfg is [1] [4] all geeks
Extracted number list : [1, 4]

Time complexity: O(n), where n is the length of the input string. This is because we need to loop through each character in the string once.
Auxiliary space: O(m), where m is the number of numbers in brackets in the input string. This is because we need to store each extracted number in a list.

Method 6: Using a loop and string manipulation

Step-by-step approach:

Below is the implementation of the above approach:




# Python3 code to demonstrate working of
# Extract Numbers in Brackets in String
 
# initializing string
test_str = "gfg is [1] [4] all geeks"
 
# printing original string
print("The original string is : " + test_str)
 
# Extract Numbers in Brackets in String
res=[]
start = -1
end = -1
for i in range(len(test_str)):
    if test_str[i] == "[":
        start = i
    elif test_str[i] == "]":
        end = i
        num_str = test_str[start+1:end]
        if num_str.isdigit():
            res.append(num_str)
 
# printing result
print("Extracted number list : " + str(res))

Output
The original string is : gfg is [1] [4] all geeks
Extracted number list : ['1', '4']

Time complexity: O(n)
Auxiliary space: O(1)

Method 6: Using list comprehension and isdigit() method




# Python3 code to demonstrate working of
# Extract Numbers in Brackets in String
# Using list comprehension and isdigit() method
 
# initializing string
test_str = "gfg is [1] [4] all geeks"
 
# printing original string
print("The original string is : " + test_str)
 
# Extract Numbers in Brackets in String
# Using list comprehension and isdigit() method
res = [int(word.strip("[]")) for word in test_str.split() if word.startswith("[") and word.endswith("]") and word.strip("[]").isdigit()]
 
# printing result
print("Extracted number list : " + str(res))

Output
The original string is : gfg is [1] [4] all geeks
Extracted number list : [1, 4]

Time complexity: O(n), where n is the length of the string.
Auxiliary space: O(n), where n is the length of the string.


Article Tags :