将嵌套的复合表达式字符串(如(a=1或(b=2和c=3))序列化和反序列化为可解析表达式图,如[关键:操作员:= 值:1,科罗拉多州功能:或, [ 键:b运算符:= 值:2,科罗拉多州功能:和, 键:c运算符:= 值:3] ].

python-expression的Python项目详细描述


表达式

关于

将嵌套的复合表达式字符串(如(a = 1 or (b = 2 and c = 3)))序列化并反序列化为可解析表达式树,如[key:a operator:= value:1, conjunction:or, [key:b operator:= value:2, conjunction:and, key:c operator:= value:3]]。在

你可能想:

  • 在端点上提供一个易于配置的过滤器,例如GET /services?filter=(price lt 200 and duration is 2hrs)。在
  • 基于表达式构建ORM过滤器。在
  • 只需计算表达式是True或{}。在

这些类集合很少假设如何评估条件。它允许作者配置可用于解析条件的处理程序。在

安装

  • []待办事项

配置

使用

将字符串反序列化为条件树。在

expression=Expression('(a = 1 and b = 2)')conditions=expression.to_conditions()print(conditions.conditions[0].key))# aprint(conditions.conditions[0].operator))# =print(conditions.conditions[0].value))# 1print(conditions.conditions[1].value))# andprint(conditions.conditions[2].key)))# bprint(conditions.conditions[2].operator))# =print(conditions.conditions[2].value))# 2

date date_between 2020-09-26,2020-09-28之类的表达式求值为布尔值。在

实例化Evaluate对象,传递已解析的表达式参数。在本例中,date键将被解析为2020-09-27的日期对象。在

^{pr2}$

在计算之前,请确保date_between表达式可以由指定的处理程序(如DateBetweenHandler)处理。在

evaluate.add_condition_handlers({'date_between':DateBetweenHandler})

现在从字符串计算表达式。在

result=evaluate.from_expression('date date_between 2020-09-26,2020-09-28')self.assertTrue(result)

您可以插入任何自定义处理程序以适应用例。在

classDateBetweenHandler(Handler):defhandle(self,condition):key=self._data.get(condition.key)values=condition.value.split(',')date1=datetime.strptime(values[0],'%Y-%M-%d')date2=datetime.strptime(values[1],'%Y-%M-%d')returndate1<=key<=date2

贡献

运行测试

coverage run -m unittest2 discover -p="*Test.py"
coverage html

或使用

bash bin/run-tests
bash bin/run-tests *Test.py

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java未从Facebook OAuth接收名字、姓氏和姓氏   我自己代码中的java ConcurrentModificationException   java在Android上获得单像素TIFF图像   java图形输出中的swing集成弹出窗口“通知”   将数据库表中的所有数据集插入jTable Java   java如何使用Hibernate获取不完整的集合?   打印无法从java连接到打印机   java使用分隔符拆分带引号的字符串   java Axis2禁用严格验证(wsdl2java中的Eosv)允许什么,如何使其更加严格?   java有人能帮我处理循环代码吗   java将JsonObject数组转换为整数   JavaXWiki扩展:检测事件空间创建   java如何设置图表的文本方向以使用poi旋转所有文本?   eche RecyclerView项的java Set自定义字体   java单元测试带有私有构造函数的spring组件,无需注入   用户界面如何在java中动态显示一组多个元素?   如何从java应用程序调用IDL(交互式数据语言)?   Java的内置库实现