何为模块?

何为模块?一个模块就是包含了python定义和声明的文件,文件名就是模块加上.py的后缀.

但其实import加载的模块分为四个通用类别:

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

  2.一杯编译为共享库或DLLD的C或C++扩展

  3.包好一组模块的包

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

为何要用模块?

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

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

 

模块的种类:

1.re模块

从京东的注册页面,打开页面我们就看到这些输入个人信息的提示.假设我们随意的在手机手机号码栏中输入12个1,它会提示我们格式错误.

这些功能是如何实现的呢?

假如现在你在python写一段代码,类似

number = input('请输入你的电话号码:')

  你是怎么判断这个number是合法的呢?

根据手机号码一共是11位,并且是以13,14,15,18开头的数字的这些特点,我们用python写了一段代码

while True :
    num = input("请输入你的电话号码:")
    if len(num) ==11\
            and num.isdigit()\
            and num.stratswith("13")\
            and num.stratswith("14")\
            and num.stratswith("15")\
            and num.stratswith("18"):
        print("是合法手机号码")
    else:
        print("不是合法的手机号码")

  这个是目前学到的写法,其实还有一种法子

import  re
num = input("请输入你的手机号码")
if re.match('(^13|14|15|18)[0-9]{9}$',num):
    print("是合法的手机号码")
else:
    print("不是合法的手机号码")

对比以上两种写法,喜欢哪一种?如果说是第一种?为啥?因为第一种不需要学

但是如果现在有一个文件,让你从文件中匹配所有的手机号码,你用python写一个试一下?

如果get今天这个技能,让你分分钟搞定,走向人生巅峰.

几天我们要学习python里面的re模块和正则表达式,学会了这个就可以帮我们解决刚刚的问题,正则不仅仅在python领域,在整个编程届都有举足轻重的地位.

ps:不管你学不学python开发,只要是一个程序员就应该了解正则表达式的基本使用,如果将来要是在爬虫领域发展的话,就应该更好好的学习这个知识.

但是你要知道,re模块本质上和正则表达式没有一毛钱关系,re模块和正则表达式的关系就类似于time模块和时间的关系

你没有学python之前,也不知道有time模块,但是你认识了时间,12:30就表示已经中午的12点半,这个时间刚刚可以下课了~

时间有自己的格式,年月日时分秒.12个月,365天...这个已经成为了一种规则,所以你也就牢记于心,time模块只不过是python提供给我们一个方便我们操作时间的工具罢了.

 

 

正则表达式本身也和python没有什么关系,就是匹配字符字符串内容的一种规则.

官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符,以及特定字符组合组成一个"规则字符串",这规则字符串用来表达对字符串的一种过滤逻辑.

 


正则表达式

一说规则是不是很晕,现在就让我们先来看一些实际的应用。在线测试工具 http://tool.chinaz.com/regex/

 首先一谈到正则,就和字符串相关了,在提供的工具里面,每输入一个字都是字符串,其次如果在一个位置的一个值,不会出现什么变化 ,那么是不需要规则的.

  如果你要用1匹配1,或者用2匹配2,就直接匹配就好了,这个连python都可以轻松做到.那么在这之后我们更多的考虑是在同一个位置上,可以出现的字符范围.

 

 字符:

元字符 匹配内容
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意空白符
\d 匹配数字
\n 匹配换行符
\t 匹配制表符(tab)

\b

匹配一个单词的结尾
^ 匹配一个字符串的开始
$ 匹配一个字符串的结尾
\W 匹配非字母或下划线
\D 匹配非数字
\S 匹配非任意空白字符
a|b a或者b
() 匹配括号里面的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中的所有字符

 

 量词:

量词 用法说明
* 重复多0或者多次
+ 重复1或者多次
? 重复0或者1次
{n} 重复n次
{n,} 重复n或者更多次
{n,m} 重复n到m次

 

 例子:

.^$

正则 带匹配字符 匹配结果 说明
大. 大哥大姐大人 大哥大姐大人 匹配所有带'大'的字符
^大. 大哥大姐大人 大哥 匹配了开头"大"
大.$ 大哥大姐大人 大人 匹配了结尾的'大'

 

 *+?{}

正则 带匹配字符 匹配结果 说明
张.? 张大和张柳柳和张二棒子

张大

张柳

张二

?表示重复零次或者一次,即只匹配张后面一个
  张大和张柳柳和张二棒子    
  张大和张柳柳和张二棒子    
  张大和张柳柳和张二棒子    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

---恢复内容结束---

posted @ 2018-09-21 17:13  赵瑞鑫  阅读(247)  评论(0编辑  收藏  举报