我需要能够采用使用OpenDocument公式语法的公式,将其解析为Python可以理解的语法,但无需评估变量,然后能够通过更改变量的贵重物品多次评估公式. 就上下文而言,我正在使用工业经济模型(生命周期评估或LCA),其中这些公式代表过程之间的材料或能量交换量.可变数量可以是几个参数(例如地理位置)的函数.公式和变量引用的链存储在有向无环图中,因此始终可以对公式进行简单评估.公式以字符串形式存储在数据库中. >是否可以解析一个公式,使得解析后的评估结果也可以存储在数据库中(作为要逃避的字符串或其他形式)? 解决方法: 1)是的,可以通过解析表达式来腌制结果,并将其保存到数据库中.然后,您可以仅获取和释放表达式,而无需重新解析原始表达式. 2)您可以仅使用compile和eval内置插件来完成此任务,如以下交互式会话所示:
当然,这具有任何基于评估或基于exec的实现的安全隐患,因为不受信任或恶意的源字符串可能会嵌入有害的系统调用.但是,如果这是您的命题,并且完全在您的控制范围之内,那么请不要做任何愚蠢的事情. 3)您可以在pyparsing Wiki的“示例”页面上获得在线示例,将表达式解析为“可评估”的数据结构.特别是检查simpleBool.py和evalArith.py.如果您感觉很忙,请订购一本Python杂志的May,2008 issue的后刊,其中有我的文章“用Pyparsing写一个简单的解释器/编译器”,其中对使用的方法进行了更详细的描述,以及对酸洗和解酸的描述.解析的结果有效. 4)较慢的部分是解析,因此您以某种中间且可重复评估的形式保存这些结果是正确的.评估部分应该相当活泼.第二个慢的部分是从数据库中获取这些腌制的结构.在您的MC运行期间,我将打包一个函数,该函数采用表达式的选择参数,从数据库中获取数据,并进行点刺并返回可评估的表达式.然后,一旦完成这项工作,就可以使用备忘录装饰器来缓存这些查询结果对,这样,任何给定的表达式只需要被提取/取消提取一次. 祝你论文好运! 来源:https://www./content-1-549901.html |
|