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