<p>如果您的验证不太复杂,您可以自己编写一些验证帮助程序:</p>
<pre><code>#!/usr/bin/env python3
# coding: utf-8
def validate(schema, seq):
"""
Validates a given iterable against a schema. Schema is a list
of callables, taking a single argument returning `True` if the
passed value is valid, `False` otherwise.
"""
if not len(schema) == len(seq):
raise ValueError('length mismatch')
for f, item in zip(schema, seq):
if not f(item):
raise ValueError('validation failed: %s' % (item))
return True
if __name__ == '__main__':
# two validation helper, add more here
isbool = lambda s: s == '0' or s == '1'
islr = lambda s: s == 'L' or s == 'R'
# define a schema
schema = [isbool, isbool, isbool, islr, isbool]
# example input
line = ['0', '1', '0', 'R', '1']
# this is valid
validate(schema, ['0', '1', '0', 'R', '1'])
# ValueError: validation failed: X
validate(schema, ['0', '1', '0', 'R', 'X'])
# ValueError: length mismatch
validate(schema, ['0', '1'])
</code></pre>
<p>有关更高级的数据结构模式验证,请参阅<a href="https://pypi.python.org/pypi/voluptuous" rel="nofollow">voluptuous</a>。你知道吗</p>
<blockquote>
<p>Voluptuous, despite the name, is a Python data validation library. It is primarily intended for validating data coming into Python as JSON, YAML, etc.</p>
</blockquote>