【问题标题】:Python object validation thanks to a Schema借助 Schema 进行 Python 对象验证
【发布时间】:2014-07-03 04:44:38
【问题描述】:

我想通过一个模式来验证一个 python 对象。为此我找到了schema framework

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

a = {
    'phone_number': '12233'
}

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

此时,我只知道如何进行字符串验证:

Schema(str).validate('12')

【问题讨论】:

    标签: python schema


    【解决方案1】:

    Schema 将调用任何可调用对象;只需提供一个使用正则表达式的函数:

    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
    

    【讨论】:

      猜你喜欢
      • 2011-01-30
      • 2015-10-24
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      相关资源
      最近更新 更多