当前位置: 首页 > 面试题库 >

Python中的安全表达式解析器

鲜于德泽
2023-03-14
问题内容

如何允许用户以安全的方式执行数学表达式?我需要写一个完整的解析器吗?

是否有类似ast.literal_eval()的东西,但用于表达式?


问题答案:

“ Pyparsing示例”页面列出了几个表达式解析器:

http://pyparsing.wikispaces.com/file/view/fourFn.py-使用pyparsing的常规算术中缀表示法解析器/评估器实现(尽管它的名称是5函数算术,还有几个trig函数

http://pyparsing.wikispaces.com/file/view/simpleBool.py-布尔值infix表示法解析器/计算器,使用pyparsing
helper方法operatorPrecedence,该方法简化了infix运算符表示法的定义

http://pyparsing.wikispaces.com/file/view/simpleArith.py


http://pyparsing.wikispaces.com/file/view/eval_arith.py-一对使用来重铸fourFn.py的示例operatorPrecedence。第一个仅解析并返回一个解析树,第二个添加评估逻辑。



 类似资料:
  • 本文向大家介绍Python中 Lambda表达式全面解析,包括了Python中 Lambda表达式全面解析的使用技巧和注意事项,需要的朋友参考一下 什么是Lambda表达式 “Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函

  • 我正在寻找一个JAVA库来解析 我的要求: 支持所有的值类型(例如int,双,布尔,String等) 支持所有已知的数学 有什么建议吗?

  • 问题内容: 有什么方法可以在python中的流上使用正则表达式匹配吗?喜欢 而且我不想通过获取整个字符串的值来做到这一点。我想知道是否有任何方法可以在srtream上匹配正则表达式(即时)。 问题答案: 我有同样的问题。首先想到的是实现一个类,该类的作用类似于字符串,但仅从流中读取当前所需的数据(我通过重新实现并提取和缓冲字符直到访问的最高位置来完成此操作……)。 这没有解决(我从中得到了“ Ty

  • 本文向大家介绍python生成器表达式和列表解析,包括了python生成器表达式和列表解析的使用技巧和注意事项,需要的朋友参考一下 绝大多数情况下,遍历一个集合都是为了对元素应用某个动作或是进行筛选。如果看过本文的第二部分,你应该还记得有内建函数map和filter提供了这些功能,但Python仍然为这些操作提供了语言级的支持。 如你所见,生成器表达式和列表解析(注:这里的翻译有很多种,比如列表展

  • 由来 很多JavaBean嵌套有很多层对象,这其中还夹杂着Map、Collection等对象,因此获取太深的嵌套对象会让代码变得冗长不堪。因此我们可以考虑使用一种表达式还获取指定深度的对象,于是BeanResolver应运而生。 原理 通过传入一个表达式,按照表达式的规则获取bean下指定的对象。 表达式分为两种: .表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值 []表

  • 本文向大家介绍浅析python的Lambda表达式,包括了浅析python的Lambda表达式的使用技巧和注意事项,需要的朋友参考一下 在python项目中,我们经常会用到lambda,那么lambda是什么呢,有什么作用,下面我们开始介绍 1、可以使用lambda关键字创建匿名函数。Lambda函数可以在需要函数对象的任何地方使用。它们在语法上限于单个表达式。所谓匿名就是无名。 例如定义两个书加