由于架构,我想验证python对象。为此,我找到了schema
framework。
我想验证一个数字字符串:
a = {
'phone_number': '12233'
}
你知道如何通过正则表达式来验证这个字符串吗?
目前,我只知道如何执行字符串验证:
Schema(str).validate('12')
答案 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