Tengo un conjunto de cadenas simples, que representan algunos DSL:
my_str = ["("word 1" + "word 2") * "word 3"",
"("word 1" + "word 2") * ("word 3" + "word 4")",
"(("word 1" + "word 2") * ("word 3" + "word 4")) * "word 5"",
]
Estaba intentando (y fallando gravemente) cambiar esto a una forma más directa, como
a = foo(my_str)
a= [
"("word 1" * "word 3") + ("word 2" * "word 3")",
"("word 1" * "word 3") + ("word 1" * "word 4") + ("word 2" * "word 3") + ("word 2" * "word 4")",
"("word 1" * "word 3" * "word 5") + ("word 1" * "word 4" * "word 5") + ("word 2" * "word 3" * "word 5") + ("word 2" * "word 4" * "word 5")",
]
Puede que sea algo simple pero parece que no puedo entender mi lógica.
Respuestas
1 para la respuesta № 1Ok, al final usé una combinación de sympy y pyparsing. Utilicé pyparsing para entender las relaciones y jerarquías entre variables, y luego sympy para crear y expandir la expresión.
Alguien interesado en un código poco terminado puede echar un vistazo a la esencia aquí.