una tuplas recorrer por metodos listas lista elementos diccionarios comprensión como anidadas agregar python parsing string exec nested-lists

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'']

ast.literal_eval :

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.