借助Schema进行Python对象验证

时间:2014-07-02 20:37:09

标签: python schema

由于架构,我想验证python对象。为此,我找到了schema framework

我想验证一个数字字符串:

a = {
    'phone_number': '12233'
}

你知道如何通过正则表达式来验证这个字符串吗?

目前,我只知道如何执行字符串验证:

Schema(str).validate('12')

1 个答案:

答案 0 :(得分:1)

Schema会调用任何callables;只需提供一个使用正则表达式的函数:

import re

pattern = re.compile('^12\d+$')

Schema(And(str, lambda x: pattern.match(x) is not None))

演示:

>>> import re
>>> from schema import Schema, And
>>> pattern = re.compile('^12\d+$')
>>> s = Schema(And(str, lambda x: pattern.match(x) is not None))
>>> s.validate('123234')
'123234'
>>> s.validate('42')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/mj/Development/venvs/stackoverflow-2.7/lib/python2.7/site-packages/schema.py", line 153, in validate
    raise SchemaError([None] + x.autos, [e] + x.errors)
schema.SchemaError: <lambda>('42') should evaluate to True