一組python用於驗證資料的函式

2021-06-28 19:03:44 字數 3623 閱讀 4696

這是一組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

#判斷是否為字典

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][1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9])-(((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])(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_]$'

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()

print 'isfloat:',isfloat(1.2)

print 'isstring:',isstring('string')

print 'isnumber:',isnumber(15)

print 'isemail:',isemail('[email protected]')

print 'ischinesechar:',ischinesechar(u'啊')

print 'ischinesecharstring:',ischinesecharstring(u'啊倒薩')

print 'islegalaccounts:',islegalaccounts('alan_z')

print 'isipaddr:',isipaddr('127.1110.0.1')

pass

#該**片段來自於:

Python學習筆記 求一組資料的眾數

眾數 mode 是統計學名詞,在統計分布上具有明顯集中趨勢點的數值,代表資料的一般水平 眾數可以不存在或多於乙個 修正定義 是一組資料 現次數最多的數值,叫眾數,有時眾數在一組數中有好幾個。用m表示。簡單地說,就是一組資料中佔比例最多的那個數。求眾數01 import numpy as np imp...

Array 一組資料的有序集合

陣列是一種資料結構,它包含若干相同型別的變數。陣列的定義是 在記憶體中連續開闢的空間,該空間中儲存著一組相同資料型別的值。陣列具有以下屬性 陣列可以是一維 多維或交錯的。數值陣列元素的預設值設定為零,而引用元素的預設值設定為 null。交錯陣列是陣列的陣列,因此,它的元素是引用型別,初始化為 nul...

對一組資料進行排序

如果有這種可能的話,三路快排是最好的選擇。是否大部分資料距離它的正確的位置很近?是否近乎有序?如果這樣,插入排序是很好的選擇。是否資料取值的範圍非常有限?比如對學生的成績排序。如果這樣,計數排序是很好的選擇 對排序有什麼額外的要求?是否需要穩定的排序?如果是的話,歸併排序是更好的選擇,快排就不行了。...