python--常用模块之正则

引自:http://www.cnblogs.com/haiyan123/p/7298967.html

认识模块

常见模块分类 

正则表达式

re模块

re模块和正则表达式的关系

collections模块

一、认识模块

    什么是模块:一个模块就是一个包含了python定义和声明的文件,文件名就是加上.py的后缀,但其实import加载的模块分为四个通用类别 :

    1.使用python编写的代码(.py文件)

    2.已被编译为共享库二和DLL的C或C++扩展

    3.包好一组模块的包

    4.使用C编写并连接到python解释器的内置模块

    为何要使用模块?

    如果你想退出python解释器然后重新进入,那么你之前定义的函数或变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时,就通过python test.py 方式去执行,此时test.py被称为脚本script。

    随着程序的发展,功能越来越多,为了方便管理,我们通常将文件分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以吧这些文件当做脚本去执行,还可以把它们当做模块来导入到其他模块中,实现了功能的重复利用。

二、常见模块分类

  常用模块一、

      collocations 模块

      时间模块

      random模块

      os模块

      sys模块

      序列化模块

      re模块

  常用模块二:这些模块和面向对象有关

      hashlib模块

      configparse模块

      logging模块

三、正则表达式

像我们平常见的那些注册页面啥的,都需要我们输入手机号码吧,你想我们的电话号码也是有限定的吧(手机号码一共11位,并且只以13,14,15,17,18开头的数字这些特点)如果你的输入有误就会提示,那么实现这个程序的话你觉得用While循环so easy嘛,那么我们来看看实现的结果。

while True:
    phone_number=input('请输入你的电话号码:')
    if len(phone_number)==11 and phone_number.isdigit()\
        and (phone_number.startswith('13')\
        or phone_number.startswith('14') \
        or phone_number.startswith('15') \
        or phone_number.startswith('17') \
        or phone_number.startswith('18')):
        print('是合法的手机号码')
    else:
        print('不是合法的手机号码')
判断手机号码是否合法

看到这个代码,虽说理解很容易,但是我还有更简单的方法。那我们一起来看看吧。

import re
phone_number=input('请输入你的电话号码:')
if re.match('^(13|14|15|17|18)[0-9]{9}$',phone_number):
    '''^这个符号表示的是判断是不是以13|14|15|17|18开头的,
    [0-9]: []表示一个字符组,可以表示0-9的任意字符
    {9}:表示后面的数字重复九次
    $:表示结束符
    '''
    print('是合法的手机号码')
else:
    print('不是合法的手机号码')
判断手机号码输入是否合法

大家可能都觉的第一种方法更简单吧,但是如果我让你从整个文件中匹配出所有的手机号码,你能用python写出来吗?但是导入re模块和利用正则表达式就可以解决这一个问题了。

那么什么是正则呢?

  首先你要知道的是,谈到正则,就只和字符串相关了。在线测试工具 http://tool.chinaz.com/regex/

比如你要用‘1’去匹配‘1’,或者用‘2’去匹配‘2’,直接就可以匹配上。

字符组:[字符组]
在同一位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示
字符分为很多类,比如数字,字母,标点等。
假如你现在要求一个位置‘只能出现一个数字’,那么这个位置上的字符只能是0、1、2、3.......9这是个数之一。

猜你喜欢

转载自www.cnblogs.com/shangdelu/p/9158968.html