python - tuplas - ¿Cómo puedo analizar una cadena que representa una lista anidada en una lista real?
listas por comprensión python (1)
Esta pregunta ya tiene una respuesta aquí:
Supongamos que tengo una cadena que representa algunas listas anidadas y quiero convertirla en algo real. Podría hacer esto, creo:
exec "myList = [''foo'', [''cat'', [''ant'', ''bee''], ''dog''], ''bar'', ''baz'']"
Pero en un entorno en el que los usuarios podrían estar suministrando la cadena para ejecutar esto podría / sería una mala idea. ¿Alguien tiene alguna idea para un analizador ordenado que lograría lo mismo?
>>> import ast
>>> mylist = ast.literal_eval("[''foo'', [''cat'', [''ant'', ''bee''], ''dog''], ''bar'', ''baz'']")
>>> mylist
[''foo'', [''cat'', [''ant'', ''bee''], ''dog''], ''bar'', ''baz'']
Evaluar de forma segura un nodo de expresión o una cadena que contenga una expresión de Python. La cadena o nodo proporcionado solo puede consistir en las siguientes estructuras literales de Python: cadenas, números, tuplas, listas, dictados, booleanos y Ninguno.
Esto se puede usar para evaluar de forma segura cadenas que contienen expresiones de Python de fuentes no confiables sin la necesidad de analizar los valores uno mismo.