Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2453983
  • 博文数量: 328
  • 博客积分: 4302
  • 博客等级: 上校
  • 技术积分: 5486
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-01 11:14
个人简介

悲剧,绝对的悲剧,悲剧中的悲剧。

文章分类

全部博文(328)

文章存档

2017年(6)

2016年(18)

2015年(28)

2014年(73)

2013年(62)

2012年(58)

2011年(55)

2010年(28)

分类: Python/Ruby

2013-05-26 12:58:16

有三种方法可以用来判断某个变量是否被定义过,见下面几个例子,注意变量名称要用引号括起来

  1. if 'ss' in locals().keys():
  2.     print 'yes'
  3. else:
  4.     print 'no'

  1. try:
  2.     print ss
  3. except NameError:
  4.     print 'this var not defined'

  1. if 'var_name' in dir():
  2.     print 'yes'
  3. else:
  4.     print 'no'

下面是一组python用于验证数据是否合法的函数,包括检测类型是否为整数、浮点数、字符串、字典、元组、数组、bool类型等,还可以检测是否为货币、是否为空、是否是合法的日期格式,是否是邮件地址(Email),是否是中文字符,是否符合用户账号的规则,是否是合法的ip地址等等。
  1. #! /usr/bin/env python
  2. #coding=utf-8
  3. import types
  4. import re
  5.  
  6.  
  7. """
  8. 验证所有表单提交的数据
  9. """
  10.  
  11. #判断是否为整数 15
  12. def IsNumber(varObj):
  13.  
  14.     return type(varObj) is types.IntType
  15.  
  16. #判断是否为字符串 string
  17. def IsString(varObj):
  18.  
  19.     return type(varObj) is types.StringType
  20.  
  21. #判断是否为浮点数 1.324
  22. def IsFloat(varObj):
  23.     return type(varObj) is types.FloatType
  24.  
  25. #判断是否为字典 {'a1':'1','a2':'2'}
  26. def IsDict(varObj):
  27.  
  28.     return type(varObj) is types.DictType
  29.  
  30. #判断是否为tuple [1,2,3]
  31. def IsTuple(varObj):
  32.  
  33.     return type(varObj) is types.TupleType
  34.  
  35. #判断是否为List [1,3,4]
  36. def IsList(varObj):
  37.  
  38.     return type(varObj) is types.ListType
  39.  
  40. #判断是否为布尔值 True
  41. def IsBoolean(varObj):
  42.  
  43.     return type(varObj) is types.BooleanType
  44.  
  45. #判断是否为货币型 1.32
  46. def IsCurrency(varObj):
  47.  
  48.     #数字是否为整数或浮点数
  49.     if IsFloat(varObj) and IsNumber(varObj):
  50.         #数字不能为负数
  51.         if varObj >0:
  52.             return isNumber(currencyObj)
  53.             return False
  54.     return True
  55.  
  56. #判断某个变量是否为空 x
  57. def IsEmpty(varObj):
  58.  
  59.     if len(varObj) == 0:
  60.         return True
  61.     return False
  62.  
  63. #判断变量是否为None None
  64. def IsNone(varObj):
  65.  
  66.     return type(varObj) is types.NoneType# == "None" or varObj == "none":
  67.  
  68. #判断是否为日期格式,并且是否符合日历规则 2010-01-31
  69. def IsDate(varObj):
  70.  
  71.     if len(varObj) == 10:
  72.         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)$/'
  73.         match = re.match( rule , varObj )
  74.         if match:
  75.             return True
  76.         return False
  77.     return False
  78.  
  79. #判断是否为邮件地址
  80. def IsEmail(varObj):
  81.  
  82.     rule = '[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$'
  83.     match = re.match( rule , varObj )
  84.  
  85.     if match:
  86.         return True
  87.     return False
  88.  
  89. #判断是否为中文字符串
  90. def IsChineseCharString(varObj):
  91.  
  92.     for x in varObj:
  93.         if (x >= u"\u4e00" and x<=u"\u9fa5") or (x >= u'\u0041' and x<=u'\u005a') or (x >= u'\u0061' and x<=u'\u007a'):
  94.            continue
  95.         else:
  96.            return False
  97.     return True
  98.  
  99.  
  100. #判断是否为中文字符
  101. def IsChineseChar(varObj):
  102.  
  103.     if varObj[0] > chr(127):
  104.        return True
  105.     return False
  106.  
  107. #判断帐号是否合法 字母开头,允许4-16字节,允许字母数字下划线
  108. def IsLegalAccounts(varObj):
  109.  
  110.     rule = '[a-zA-Z][a-zA-Z0-9_]{3,15}$'
  111.     match = re.match( rule , varObj )
  112.  
  113.     if match:
  114.         return True
  115.     return False
  116.  
  117. #匹配IP地址
  118. def IsIpAddr(varObj):
  119.  
  120.     rule = '\d+\.\d+\.\d+\.\d+'
  121.     match = re.match( rule , varObj )
  122.  
  123.     if match:
  124.         return True
  125.     return False
  126.  
  127.  
  128.  
  129. if __name__=='__main__':
  130.     print 'IsDate:',IsDate('2010-01-31')
  131.     print 'IsNone:',IsNone(None)
  132.     print 'IsEmpty:',IsEmpty('1')
  133.     print 'IsCurrency:',IsCurrency(1.32)
  134.     print 'IsList:',IsList([1,3,4])
  135.     print 'IsTuple:',IsTuple([1,3,4])
  136.     print 'IsDict:',IsDict({'a1':'1','a2':'2'})
  137.     print 'IsFloat:',IsFloat(1.2)
  138.     print 'IsString:',IsString('string')
  139.     print 'IsNumber:',IsNumber(15)
  140.     print 'IsEmail:',IsEmail('sgicer@163.com')
  141.     print 'IsChineseChar:',IsChineseChar(u'啊')
  142.     print 'IsChineseCharString:',IsChineseCharString(u'啊倒萨')
  143.     print 'IsLegalAccounts:',IsLegalAccounts('alan_z')
  144.     print 'IsIpAddr:',IsIpAddr('127.1110.0.1')
  145.     pass

阅读(3600) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~