#python #schema
#python #схема
Вопрос:
Я хочу проверить объект Python благодаря схеме. Для этого я нашел schema
фреймворк.
Я хотел бы проверить числовую строку:
a = {
'phone_number': '12233'
}
Вы знаете, как я могу проверить эту строку с помощью регулярного выражения?
На данный момент я знаю только, как выполнить проверку строки:
Schema(str).validate('12')
Ответ №1:
Schema
вызовет любые вызываемые объекты; просто предоставьте функцию, которая использует регулярное выражение:
import re
pattern = re.compile('^12d $')
Schema(And(str, lambda x: pattern.match(x) is not None))
ДЕМОНСТРАЦИЯ:
>>> import re
>>> from schema import Schema, And
>>> pattern = re.compile('^12d $')
>>> 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