python第三方库推荐 - 优雅的数据验证库schema

这个在验证表单、配置、客户端传过来的数据等很有用。

安装

easy_install schema 或 pip install schema


基本用法

from schema import Schema
Schema(xxx).validate(data)
其中参数xxx可以是:
  • 基本数据类型比如int/float/list/tuple/set/str等。
  • 函数
  • list, tuple, set, frozenset, dict实例
  • 某个重写了validate方法的类。比如Use。

如果验证通过,会返回验证通过的数据。

如果验证不通过,会抛出SchemaError异常。


示例

基本类型
>>Schema(int).validate(123)

函数
>>Schema(os.path.exists).validate('/path/to/file')

先转换再验证
>>from schema import Use
>>Schema(Use(int)).validate('123')

如果Schema的参数是一个容器,list, tuple, set or frozenset,那么待验证的数据也必须是个对应的容器,且容器元素在枚举内。
>>Schema([1, 0]).validate([1, 1, 0, 1])
>>Schema((int, float)).validate((5, 7, 8, 'not int or float here'))

可以对字典的key和value验证
>>Schema({'name': str, 'age': lambda n: 18 < 99}).validate({'name': 'Sue', 'age': 28})
>>Schema({str: int,  # 代表字符串的key的value类型必须是整型
        int: None})  #整型的key的value必须是None
如果只想对部分键值验证,而不管其它的,可以用object。
>>Schema({'id': int,str: object}).validate({'id':10,'age':2,'name':'Rooney'}) 

可选、与、或
>>from schema import Optional,And, Or
>>Schema({'name': str, Optional('occupation'): str}).validate({'name': 'Sam'})
>>Schema({'age': And(int, lambda n: 0 < n < 99)}).validate({'age': 7})
>>Schema(And(Or(int, float), lambda x: x > 0)).validate(3.1415)


项目地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值