Python | Convert string tuples to list tuples
Last Updated :
28 Feb, 2023
Sometimes, while working with Python we can have a problem in which we have a list of records in form of tuples in stringified form and we desire to convert them to a list of tuples. This kind of problem can have its occurrence in the data science domain. Let's discuss certain ways in which this task can be performed.
Method 1 (Using eval() + list comprehension): This problem can be easily performed as a one-liner using the inbuilt function of eval(), which performs this task of string to tuple conversion and list comprehension.
Python3
# Python3 code to demonstrate working of
# Converting string tuples to list tuples
# using list comprehension + eval()
# Initializing list
test_list = ["('gfg', 1)", "('is', 2)", "('best', 3)"]
# printing original list
print("The original list is : " + str(test_list))
# Converting string tuples to list tuples
# using list comprehension + eval()
res = [eval(ele) for ele in test_list]
# printing result
print("The list tuple after conversion : " + str(res))
Output : The original list is : ["('gfg', 1)", "('is', 2)", "('best', 3)"]
The list tuple after conversion : [('gfg', 1), ('is', 2), ('best', 3)]
Time complexity: O(n), where n is the length of the input list.
Auxiliary space: O(n), as we are creating a new list with the same length as the input list.
Method 2 (Using eval() + map()): This task can also be performed using a combination of the above functions. The task performed by list comprehension above can be performed using a map() in this method.
Python3
# Python3 code to demonstrate working of
# Converting string tuples to list tuples
# using map() + eval()
# Initializing list
test_list = ["('gfg', 1)", "('is', 2)", "('best', 3)"]
# printing original list
print("The original list is : " + str(test_list))
# Converting string tuples to list tuples
# using map() + eval()
res = list(map(eval, test_list))
# printing result
print("The list tuple after conversion : " + str(res))
Output : The original list is : ["('gfg', 1)", "('is', 2)", "('best', 3)"]
The list tuple after conversion : [('gfg', 1), ('is', 2), ('best', 3)]
Time Complexity: O(n), where n is the number of elements in the input list.
Auxiliary Space: O(n), where n is the number of elements in the input list, for the output list.
Method 3: Using the enumerate function
Python3
s=["('gfg', 1)", "('is', 2)", "('best', 3)"]
x= [eval(i) for a,i in enumerate(s)]
print(x)
Output[('gfg', 1), ('is', 2), ('best', 3)]
Time complexity: O(n), where n is the length of the list 's'.
Auxiliary space: O(n), where n is the length of the list 's'.
Method 4: Using map()+eval()
Python3
s=["('gfg', 1)", "('is', 2)", "('best', 3)"]
x=list(map(eval,s))
print(x)
Output[('gfg', 1), ('is', 2), ('best', 3)]
The time complexity of the program is O(n), where n is the length of the list "s".
The auxiliary space complexity of the program is also O(n), as the list "x" has to store n elements, where n is the length of the input list "s".
Method#5: Using Regex method.
Python3
# Python3 code to demonstrate working of
# Converting string tuples to list tuples
# Using regex
import re
# Initializing list
test_list = ["('gfg', 1)", "('is', 2)", "('best', 3)"]
# printing original list
print("The original list is : " + str(test_list))
# Converting string tuples to list tuples
# using regex
res = [tuple(map(int, re.findall(r'\d+', i))) if j.isdigit() else (j.strip("(')"), int(k)) for i in test_list for j, k in re.findall(r"\('(.*?)', (.*?)\)", i)]
# printing result
print("The list tuple after conversion : " + str(res))
#this code contributed by tvsk
OutputThe original list is : ["('gfg', 1)", "('is', 2)", "('best', 3)"]
The list tuple after conversion : [('gfg', 1), ('is', 2), ('best', 3)]
Time Complexity: O(n)
Auxiliary Space: O(n)
Method 6: (Using ast.literal_eval() instead of eval())
The ast module provides a safer way to evaluate string literals. The ast.literal_eval() function can evaluate a string containing a Python expression or a container object literal and return the corresponding object. It only evaluates literals, so it won't execute arbitrary code like eval().
Python3
import ast
# Initializing list
test_list = ["('gfg', 1)", "('is', 2)", "('best', 3)"]
# printing original list
print("The original list is : " + str(test_list))
# Converting string tuples to list tuples
# using ast.literal_eval() instead of eval()
# ast.literal_eval() is a safer way to evaluate string literals
# it only evaluates literals, so it won't execute arbitrary code like eval()
res = [ast.literal_eval(ele) for ele in test_list]
# printing result
print("The list tuple after conversion : " + str(res))
OutputThe original list is : ["('gfg', 1)", "('is', 2)", "('best', 3)"]
The list tuple after conversion : [('gfg', 1), ('is', 2), ('best', 3)]
Time Complexity: O(n)
Auxiliary Space: O(n)
Similar Reads
Python | Convert String to tuple list Sometimes, while working with Python strings, we can have a problem in which we receive a tuple, list in the comma-separated string format, and have to convert to the tuple list. Let's discuss certain ways in which this task can be performed. Method #1 : Using loop + split() + replace() This is a br
5 min read
Python - Convert Tuple String to Integer Tuple Interconversion of data is a popular problem developer generally deal with. One can face a problem to convert tuple string to integer tuple. Let's discuss certain ways in which this task can be performed. Method #1 : Using tuple() + int() + replace() + split() The combination of above methods can be
7 min read
Python | Convert String to list of tuples Sometimes, while working with data, we can have a problem in which we have a string list of data and we need to convert the same to list of records. This kind of problem can come when we deal with a lot of string data. Let's discuss certain ways in which this task can be performed. Method #1: Using
8 min read
Convert tuple to string in Python The goal is to convert the elements of a tuple into a single string, with each element joined by a specific separator, such as a space or no separator at all. For example, in the tuple ('Learn', 'Python', 'Programming'), we aim to convert it into the string "Learn Python Programming". Let's explore
2 min read
Convert String to Tuple - Python When we want to break down a string into its individual characters and store each character as an element in a tuple, we can use the tuple() function directly on the string. Strings in Python are iterable, which means that when we pass a string to the tuple() function, it iterates over each characte
2 min read