python第三方庫推薦 - 優雅的數據驗證庫schema
這個在驗證表單、配置、客戶端傳過來的數據等很有用。
安裝
easy_install schema 或 pip install schema
基本用法
from schema import SchemaSchema(xxx).validate(data)
其中參數xxx可以是:
- 基本數據類型比如int/float/list/tuple/set/str等。
- 函數
- list, tuple, set, frozenset, dict實例
- 某個重寫了validate方法的類。比如Use。 </ul>
如果驗證通過,會返回驗證通過的數據。
如果驗證不通過,會拋出SchemaError異常。
示例
基本類型>>Schema(int).validate(123)
函數
>>Schema(os.path.exists).validate('/path/to/file')
先轉換再驗證
>>from schema import Use
>>Schema(Use(int)).validate('123')
如果Schema的參數是一個容器,list, tuple, set or frozenset,那么待驗證的數據也必須是個對應的容器,且容器元素在枚舉內。
>>Schema([1, 0]).validate([1, 1, 0, 1])
>>Schema((int, float)).validate((5, 7, 8, 'not int or float here'))
可以對字典的key和value驗證
>>Schema({'name': str, 'age': lambda n: 18 < 99}).validate({'name': 'Sue', 'age': 28})
>>Schema({str: int, # 代表字符串的key的value類型必須是整型
int: None}) #整型的key的value必須是None
如果只想對部分鍵值驗證,而不管其它的,可以用object。
>>Schema({'id': int,str: object}).validate({'id':10,'age':2,'name':'Rooney'})
可選、與、或
>>from schema import Optional,And, Or
>>Schema({'name': str, Optional('occupation'): str}).validate({'name': 'Sam'})
>>Schema({'age': And(int, lambda n: 0 < n < 99)}).validate({'age': 7})
>>Schema(And(Or(int, float), lambda x: x > 0)).validate(3.1415)
項目地址
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!