Python: convierte registros de strings en listas de tuplas

A veces, mientras trabajamos con datos, podemos tener problemas en los que necesitamos convertir la lista de datos en formato de string a una lista de tuplas. Esto puede ocurrir en dominios en los que tenemos entradas de tipo cruzado. Analicemos ciertas formas en que se puede realizar esta tarea.

Método n.º 1: Uso de bucle +eval()
La combinación de los métodos anteriores se puede utilizar para resolver esta tarea. En esto, rehacemos la string después de procesar la entrada a la función de evaluación para convertirla en listas de tuplas.

# 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)) 
Producción :

The original string is : [(gfg, ), (is, ), (best, )]
The list of Tuples is : [('gfg', ), ('is', ), ('best', )]

Método #2: Uso de expresiones regulares + comprensión de lista
La combinación de las funcionalidades anteriores se utiliza para realizar esta tarea. En esto, empleamos la función regex para realizar la tarea de resolver las ayudas de comprensión de strings y listas en la reconstrucción de la lista de registros.

# 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)) 
Producción :

The original string is : [(gfg, ), (is, ), (best, )]
The list of Tuples is : [('gfg', ''), ('is', ''), ('best', '')]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *