一組python用于驗證數據的函數

pycct 10年前發布 | 1K 次閱讀 Python

這是一組python用于驗證數據是否合法的函數,包括檢測類型是否為整數、浮點數、字符串、字典、元組、數組、bool類型等,還可以檢測是否為 貨幣、是否為空、是否是合法的日期格式,是否是郵件地址(Email),是否是中文字符,是否符合用戶賬號的規則,是否是合法的ip地址等等。

#! /usr/bin/env python

coding=utf-8

import types import re

""" 驗證所有表單提交的數據 """

判斷是否為整數 15

def IsNumber(varObj):

return type(varObj) is types.IntType

判斷是否為字符串 string

def IsString(varObj):

return type(varObj) is types.StringType

判斷是否為浮點數 1.324

def IsFloat(varObj): return type(varObj) is types.FloatType

判斷是否為字典 {'a1':'1','a2':'2'}

def IsDict(varObj):

return type(varObj) is types.DictType

判斷是否為tuple [1,2,3]

def IsTuple(varObj):

return type(varObj) is types.TupleType

判斷是否為List [1,3,4]

def IsList(varObj):

return type(varObj) is types.ListType

判斷是否為布爾值 True

def IsBoolean(varObj):

return type(varObj) is types.BooleanType

判斷是否為貨幣型 1.32

def IsCurrency(varObj):

#數字是否為整數或浮點數
if IsFloat(varObj) and IsNumber(varObj):
    #數字不能為負數
    if varObj >0:
        return isNumber(currencyObj)
        return False
return True

判斷某個變量是否為空 x

def IsEmpty(varObj):

if len(varObj) == 0:
    return True
return False

判斷變量是否為None None

def IsNone(varObj):

return type(varObj) is types.NoneType# == "None" or varObj == "none":

判斷是否為日期格式,并且是否符合日歷規則 2010-01-31

def IsDate(varObj):

if len(varObj) == 10:
    rule = '(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$/'
    match = re.match( rule , varObj )
    if match:
        return True
    return False
return False

判斷是否為郵件地址

def IsEmail(varObj):

rule = '[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$'
match = re.match( rule , varObj )

if match:
    return True
return False

判斷是否為中文字符串

def IsChineseCharString(varObj):

for x in varObj:
    if (x >= u"\u4e00" and x<=u"\u9fa5") or (x >= u'\u0041' and x<=u'\u005a') or (x >= u'\u0061' and x<=u'\u007a'):
       continue
    else:
       return False
return True


判斷是否為中文字符

def IsChineseChar(varObj):

if varObj[0] > chr(127):
   return True
return False

判斷帳號是否合法 字母開頭,允許4-16字節,允許字母數字下劃線

def IsLegalAccounts(varObj):

rule = '[a-zA-Z][a-zA-Z0-9_]{3,15}$'
match = re.match( rule , varObj )

if match:
    return True
return False

匹配IP地址

def IsIpAddr(varObj):

rule = '\d+\.\d+\.\d+\.\d+'
match = re.match( rule , varObj )

if match:
    return True
return False



if name=='main': print 'IsDate:',IsDate('2010-01-31') print 'IsNone:',IsNone(None) print 'IsEmpty:',IsEmpty('1') print 'IsCurrency:',IsCurrency(1.32) print 'IsList:',IsList([1,3,4]) print 'IsTuple:',IsTuple([1,3,4]) print 'IsDict:',IsDict({'a1':'1','a2':'2'}) print 'IsFloat:',IsFloat(1.2) print 'IsString:',IsString('string') print 'IsNumber:',IsNumber(15) print 'IsEmail:',IsEmail('sgicer@163.com') print 'IsChineseChar:',IsChineseChar(u'啊') print 'IsChineseCharString:',IsChineseCharString(u'啊倒薩') print 'IsLegalAccounts:',IsLegalAccounts('alan_z') print 'IsIpAddr:',IsIpAddr('127.1110.0.1') pass</pre>

 本文由用戶 pycct 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!