目录
一、简述
二、安装schema库
三、使用
基本概念
代码示例
简单使用
列表验证
正则表达式
schema用于简化数据验证的过程。它提供了一种简单的方式来定义数据结构,并验证传入的数据是否符合预期的结构。schema
库非常适合用于 Web 应用的请求验证、配置文件解析以及其他需要数据验证的场景。
pip install schema
from schema import Schema, And, Optional, SchemaError
# 验证数据
data = {
'name': 'Alice',
'age': 30,
'email': 'ALICE@EXAMPLE.COM',
'phone': '13578965478',
'aaa': 144,
'info': {
'addr': 'BeiJing',
'card': '12312313123131231322X'
}
}
# 定义规则
schema_params = {
"name": And(str, len),
"age": And(int, lambda a: 0 <= a <= 150, error="年龄不为数字,或年龄大于0小于150"),
"email": And(str),
Optional("phone"): And(str, lambda p: len(p) == 11, error="手机号格式错误"),
'info': {
'addr': And(len, error='每个人不能没有家住址'),
'card': And(len, error='每个人都得有身份证')
}
}
# 设置 ignore_extra_keys=True 时,如果传入的数据包含不在验证模式中的额外键,这些键将被忽略,而不会引发错误。
rule_schema = Schema(schema_params, ignore_extra_keys=True)
try:
rule_schema.validate(data)
except SchemaError as e:
print(e)
from schema import Schema, And, Use
# 定义验证规则
schema = Schema({
'users': [
{
'name': str,
'age': And(int, lambda n: 0 <= n <= 120)
}
]
})
# 验证数据
data = {
'users': [
{'name': 'Alice', 'age': 30},
{'name': 'Bob', 'age': 25}
]
}
try:
validated_data = schema.validate(data)
print("Validated data:", validated_data)
except SchemaError as e:
print("Validation error:", e)
from schema import Schema, Regex
# 定义验证规则
schema = Schema({
'email': Regex(r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$')
})
# 验证数据
data = {
'email': 'alice@example.com'
}
try:
validated_data = schema.validate(data)
print("Validated data:", validated_data)
except SchemaError as e:
print("Validation error:", e)