¿Cómo convierto esta cadena que es una lista en una lista adecuada?
mylist = "['KYS_Q5Aa8', 'KYS_Q5Aa9']"
Me cansé de esto pero no es lo que esperaba:
print mylist.split() ["['KYS_Q5Aa8',", "'KYS_Q5Aa9']"]
Me gustaría así:
['KYS_Q5Aa8','KYS_Q5Aa9']
Gracias
Use literal_eval del módulo ast :
>>> import ast >>> ast.literal_eval("['KYS_Q5Aa8', 'KYS_Q5Aa9']") ['KYS_Q5Aa8', 'KYS_Q5Aa9']
A diferencia de eval
, literal_eval es seguro de usar en cadenas de usuario u otras fonts de cadena desconocidas. Solo comstackrá cadenas en estructuras de datos básicas de Python; todas las demás fallan.
Alternativamente, si su cadena es así (es decir, sin comas incrustadas o significado para analizar dentro de las cadenas con comillas secundarias), podría forzar la división para hacer lo que quiera que haga también:
>>> mystring = "['KYS_Q5Aa8', 'KYS_Q5Aa9']" >>> [e.strip("' ") for e in mystring.strip('[] ').split(',')] ['KYS_Q5Aa8', 'KYS_Q5Aa9']
Puedes usar json library y es más eficiente que eval.
import json mylist = "['KYS_Q5Aa8', 'KYS_Q5Aa9']" mylist = json.loads(mylist.replace("'",'\"'))