Python – 将字符串记录转换为元组列表
有时,在处理数据时,我们可能会遇到需要将字符串格式的数据列表转换为元组列表的问题。这可能发生在我们有跨类型输入的域中。让我们讨论可以执行此任务的某些方式。
方法 #1:使用循环 + eval()
上述方法的组合可以用来解决这个任务。在此,我们在处理输入到 eval函数以转换为元组列表后重新制作字符串。
# Python3 code to demonstrate working of
# Convert String Records to Tuples Lists
# Using loop + eval()
# initializing string
test_str = '[(gfg, ), (is, ), (best, )]'
# printing original string
print("The original string is : " + test_str)
# Convert String Records to Tuples Lists
# Using loop + eval()
res = ''
temp = True
for chr in test_str:
if chr == '(' and temp:
res += '("'
temp = False
continue
if chr == ', ' and not temp:
res += '"'
temp = True
res += chr
res = eval(res)
# printing result
print("The list of Tuples is : " + str(res))
输出 :
The original string is : [(gfg, ), (is, ), (best, )]
The list of Tuples is : [('gfg', ), ('is', ), ('best', )]
方法 #2:使用正则表达式 + 列表理解
上述功能的组合用于执行此任务。在此,我们使用正则表达式函数来执行解析字符串的任务,列表理解有助于重建记录列表。
# Python3 code to demonstrate working of
# Convert String Records to Tuples Lists
# Using regex + list comprehension
import re
# initializing string
test_str = '[(gfg, ), (is, ), (best, )]'
# printing original string
print("The original string is : " + test_str)
# Convert String Records to Tuples Lists
# Using regex + list comprehension
regex = re.compile(r'\((.*?)\)')
temp = regex.findall(test_str)
res = [tuple(sub.split(', ')) for sub in temp]
# printing result
print("The list of Tuples is : " + str(res))
输出 :
The original string is : [(gfg, ), (is, ), (best, )]
The list of Tuples is : [('gfg', ''), ('is', ''), ('best', '')]