一组python用于验证数据的函数

2022-04-29 00:00:00 函数 用于 验证

这是一组python用于验证数据是否合法的函数,包括检测类型是否为整数、浮点数、字符串、字典、元组、数组、bool类型等,还可以检测是否为货币、是否为空、是否是合法的日期格式,是否是邮件地址(Email),是否是中文字符,是否符合用户账号的规则,是否是合法的ip地址等等。

"""
皮蛋编程(https://www.pidancode.com)
创建日期:2022/4/1
功能描述:一组python用于验证数据的函数
"""

import re

# 判断是否为整数 15
def IsNumber(varObj):
    return type(varObj) is int


# 判断是否为字符串 string
def IsString(varObj):
    return type(varObj) is str


# 判断是否为浮点数 1.324
def IsFloat(varObj):
    return type(varObj) is float


# 判断是否为字典 {'a1':'1','a2':'2'}
def IsDict(varObj):
    return type(varObj) is dict


# 判断是否为tuple [1,2,3]
def IsTuple(varObj):
    return type(varObj) is tuple


# 判断是否为List [1,3,4]
def IsList(varObj):
    return type(varObj) is list


# 判断是否为布尔值 True
def IsBoolean(varObj):
    return type(varObj) is bool


# 判断是否为货币型 1.32
def IsCurrency(varObj):
    # 数字是否为整数或浮点数
    if IsFloat(varObj) and IsNumber(varObj):
        # 数字不能为负数
        if varObj > 0:
            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 None  # == "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('2022-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('pidancode.com'))
    print('IsNumber:', IsNumber(15))
    print('IsEmail:', IsEmail('info@pidancode.com'))
    print('IsChineseChar:', IsChineseChar(u'啊'))
    print('IsChineseCharString:', IsChineseCharString(u'啊倒萨'))
    print('IsLegalAccounts:', IsLegalAccounts('alan_z'))
    print('IsIpAddr:', IsIpAddr('127.1110.0.1'))
    pass

相关文章