|
|
1
1
定义自己的函数,该函数接受两个条件和一个运算符,并计算:
然后评估批次:
请随意进行预处理
|
|
|
2
1
不要使用eval。这是一个巨大的安全风险。如果您的条件相对简单,我会考虑给用户一个合适的flex GUI,在其中输入它们,不仅仅是一个原始文本区域,而是一个真正的表达式创建工具。查看任何相当复杂的搜索应用程序中的“高级搜索”功能以获取示例。然后将他们输入到GUI小部件中的数据表示为对象。您可以将表达式建模为一系列表达式(15“duck”5.3等)、运算符(<>=!=等),连词(和或不是等),或沿着这些线的东西。然后我将这些数据整理到JSON,将它们解组为服务器端的Python代码上的Python对象,并用定制的Python代码对它们进行评估。 现在,如果一组运算符和表达式非常大,请考虑定义 Domain Specific Language 并且解析它,这比评估原始代码要安全得多。我自己还没有做过DSL,但我听说python有很好的库( PLY 可能会有所帮助)。 |
|
|
3
0
伊格纳西奥的回答是前进的道路。检查你的数据,一路建立你的复杂条件。但你必须在基本条件下使用eval:
您可能希望确保条件列表中没有“邪恶”条件,例如,通过确保它们始终包含比较运算符(=,<=,……)。 |