首页 > 代码库 > python模块与正则表达式
python模块与正则表达式
一、模块
模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称。
import 模块的实质就是把要导入模块里面的代码,从上到下执行一遍找模块的顺序是,先从当前目录下找,找不到的话,再环境变量里面找。
模块的分类:
? 标准库:python内置的
? 开源模块:第三方
? 自定义模块:自己写的
其中开源模块需要安装,安装方式有一下两种:
安装方式第一种:
这是操作系统命令,不是在python命令行里面执行
pip install xxx 安装某个模块
pip list 查看已经安装的模块
pip uninstall xxx卸载模块
pip这个模块呢,在python3里面是python自带的,安装完python就能直接用,但是在python2里面是没有这个模块的,需要你手动安装才能用
easy_install requests #这个也是傻瓜式的
第二种方式,手动安装:
1、先下载安装包,直接百度搜比如说python requests模块
2、解压安装包
3、在解压的目录下执行 python setup.py install
OS模块
print(os.getcwd())#取当前工作目录
print(os.chdir(r"e:\byz_code\day2"))#更改当前目录
print(os.mkdir("test1"))#创建文件夹
print(os.makedirs(r"test1\test2"))#递归创建文件夹,父目录不存在时创建父目录
print(os.removedirs(r"test1\test2"))#递归删除空目录
print(os.rmdir("test1"))#删除指定的文件夹,只能删除空文件夹
print(os.remove(r"E:\byz_code\day4\a.txt"))#删除文件
os.rename("test","test1")#重命名
print(os.sep)#当前操作系统的路径分隔符
print(__file__)#代表当前文件
print(os.path.abspath(‘bb.py‘))#获取绝对路径
print(__file__)#代表当前文件
print(os.path.dirname)
print(os.path.dirname(os.path.dirname(__file__)))#获取父目录
print(os.path.exists("hhaaa"))#目录/文件是否存在
print(os.path.isfile("bb.py"))#判断是否是一个文件
print(os.path.isdir("/usr/local"))#是否是一个路径
print(os.path.join("root",‘hehe‘,‘haha‘,‘a.log‘))
RE模块
re.match 只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none
re.search 匹配包含,search()会扫描整个字符串并返回第一个成功的匹配
re.findall 把所有匹配到的字符放到以列表中的元素返回
re.splitall 以匹配到的字符当做列表分隔符
re.sub 匹配字符并替换
二、正则表达式
正则表达式
正则表达式就是用查找字符串的,它能查找规则比较复杂的字符串
数量词
‘*‘ 匹配*号前的字符0次或多次,只是*前面的一个字符
print(re.findall(r‘a*b‘,‘ab a abbbbbb aab‘))
>>> [‘ab‘, ‘ab‘, ‘b‘, ‘b‘, ‘b‘, ‘b‘, ‘b‘, ‘aab‘]
‘+‘ 匹配前一个字符1次或多次,只是+前面的一个字符
print(re.findall(r‘st+‘,‘besttest is best s‘))
>>> [‘stt‘, ‘st‘, ‘st‘]
‘?‘ 匹配前一个字符1次或0次,只是?前面的一个字符
print(re.findall(r‘st?‘,‘besttest is best‘))
‘{2}‘ 匹配前一个字符m次
print(re.findall(r‘t{2}er‘,‘besttest is best letter letter‘))
>>> [‘tter‘,‘tter‘]
‘{n,m}‘ 匹配前一个字符n到m次
print(re.findall(r‘t{1,3}‘,‘besttest is best ttttt‘))
>>> [‘tt‘, ‘t‘, ‘t‘,‘ttttt‘]
一般字符
‘.‘ 默认匹配除\n之外的任意一个字符
print(re.findall(r‘b.‘,‘besttest is good ba bf bo‘))
>>> [[‘be‘, ‘ba‘, ‘bf‘, ‘bo‘]
‘\‘ 转译符,前面的* + ?这样的字符都有特殊含义了,如果你想就想找它的话,那就得转译了
意思就是说如果你想让特殊字符失去以前的含义,那么就得给它前面加上\
print(re.findall(r‘\?‘,‘besttest is best????‘))
>>> [‘?‘, ‘?‘, ‘?‘, ‘?‘]
‘|‘ 匹配|左或|右的字符
print(re.findall(r‘best|is‘,‘besttest is best‘))
>>> [‘best‘, ‘is‘, ‘best‘
‘[]‘ 字符集合,某些字符的集合,匹配的时候是这个集合里面的任意一个就行
print(re.findall(r‘be[stacj]‘,‘besttest is best bejson bed‘))
>>>[‘bes‘, ‘bes‘, ‘bej‘]
在[]里面如果用^的话代表取反,也就是不包括的这些字符串的
print(re.findall(r‘be[^stac]‘,‘besttest is best bejson‘))
边界匹配
‘^‘ 匹配以什么字符开头,多行情况下匹配每一行的开头
print(re.findall(r‘^b‘,‘besttest is good\nbestest‘,re.M)) #re.M表示匹配多行
print(re.findall(r‘^http://‘,‘http://www.baidu.com is good\nbestest‘))
>>> [‘b‘]
print(re.findall(r‘^b‘,‘besttest is good\nbest‘),re.M)#多行模式
>>> [‘b‘,‘b‘]
‘$‘ 匹配以什么字符结尾,多行情况下匹配每一行的结尾
print(re.findall(r‘d$‘,‘besttest is good‘))
未全整理完,后续整理
python模块与正则表达式