-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathdemo.py
More file actions
48 lines (38 loc) · 1.41 KB
/
demo.py
File metadata and controls
48 lines (38 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/python
#coding=utf8
"""
# Author: meetbill
# Created Time : 2018-12-16 17:29:44
# File Name: demo.py
# Description:
"""
import schema
# 检查数字
print '----------------------int'
print schema.Schema(int).validate(123)
print schema.Schema(int).is_valid(123)
# 检查字符串
print '----------------------str'
# Regex 没有 is_valid 方法
print schema.Regex(r'^foo').validate('foobar')
print schema.Schema(lambda n: "foo" in n).is_valid('foobar')
print 'False:%s ' % schema.Schema(lambda n: "foo" in n).is_valid('fobar')
# 检查字典
print '----------------------dict'
rules = {
'name': schema.And(str, len),
'age': schema.And(schema.Use(int), lambda n: 18 <= n <= 99),
schema.Optional('gender'): schema.And(str, schema.Use(str.lower),lambda s: s in ('squid', 'kid'))}
data = {'name': 'Sue', 'age': '28', 'gender': 'Squid'}
print schema.Schema(rules).validate(data)
print schema.Schema(rules).is_valid(data)
print '----------------------list-dict'
rules = [{
'name': schema.And(str, len),
'age': schema.And(schema.Use(int), lambda n: 18 <= n <= 99),
schema.Optional('gender'): schema.And(str, schema.Use(str.lower),lambda s: s in ('squid', 'kid'))}]
data = [{'name': 'Sue', 'age': '28', 'gender': 'Squid'},
{'name': 'Sam', 'age': '42'},
{'name': 'Sacha', 'age': '20', 'gender': 'KID'}]
print schema.Schema(rules).validate(data)
print schema.Schema(rules).is_valid(data)