将字符串扩展为代数表达式

时间:2016-08-01 15:53:14

标签: python string

我有一组简单的字符串,代表一些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"',
         ]

我正在尝试(并且做得很糟糕)将这些更改为更直接的形式,例如

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")',
]

可能是一件简单的事情,但我似乎无法理解这个逻辑。

1 个答案:

答案 0 :(得分:1)

Ok最后我使用了sympy和pyparsing的组合。 我使用pyparsing来理解变量之间的关系和层次结构,然后同意创建和扩展表达式。

有些人对一些过度完成的代码感兴趣,可以在这里查看gist