Проверка объекта Python благодаря схеме

#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