一、模块
import 模块的实质就是把要导入模块里面的代码,从上到下执行一遍,找模块的顺序是,先从当前目录下找,找不到的话,再环境变量里面找
导入的模块名字最好不要有.,a.
import sys
print(sys.path)#当前环境变量有哪些,针对python,并不是整个系统
标准模块:
python自带的,不需要安装的,直接import就能用的
自己写的模块:
也就是自己写的python
第三方模块:
别人已经开发好的功能,需要安装的
利用pip python安装目录scripts下有pip命令,要用这个命令就得把scripts目录加入到环境变量
安装方式第一种:
这是操作系统命令,不是在python命令行里面执行
pip install xx 安装某个模块
pip list 查看已经安装的模块
pip uninstall xxx 卸载 模块
pip这个模块,在python3里面是python自带的,安装完python就能直接用,但是在python2里面是没有这个模块的,需要你手动安装才能用
easy_install requests也可以安装,这个也是傻瓜式安装试,python3自带,python2需要手动安装

第二种方式,手动安装:
1.先下载安装包,直接百度搜,比如说python requests 模块
2.解压安装包
3.在解压的目录下执行python setup.py install

2. os模块
import os #导入os模块
print(os.getcwd())
print(os.chdir(r"e"\byz_code\day2")) #更改当前目录
print(os.mkdir(r"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"))#删除文件
r是代表原字符,代表原样输出,不转义
os.rename("test","test1")#重命名
print(os.sep)#当前操作系统的路径分隔符
print(os.listdir(".")) #列出一个目录下的所有内容
print(__file__)#代表当前文件
print(os.path.abspath('bb.py'))#获取绝对路径
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')) #拼接成一个路径
sys.path.append(r'e:\002\hhaa') 添加环境变量不能写死
sys.path.append(os.path.dirname(__file__)) 把父目录加到环境变量

3.sys模块
import sys #导入sys模块
sys.argv #命令行参数list,第一个元素是程序本身路径
sys.exit('xxx') #退出程序,正常退出时exit(0) xxx为提示信息
sys.version #获取Python解释程序的版本信息
sys.path #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform #返回操作系统平台名称
sys.stdout.write('please:') #向屏幕输出一句话
val = sys.stdin.readline()[:-1] #获取输入的值

二、软件开发规范
软件开发规范目录及文件说明

bin:可执行文件,程序入口
conf:放配置文件
core:核心文件
data:数据存储文件
logs:日志文件
README.md:说明文件
目录结构如图所示

import os,sys
path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #当前目录
#sys.path.append(path) #末尾添加,但如果有其它路径中有相同模块,先找到就直接返回,不往下找了,最好用insert放到首位
sys.path.insert(0,path) #放到环境变量首位,避免有相同模块,找不到
#sys.path.pop(0)#删除环境变量
如果目录已经加到环境变量,可以右键Mark Directory as-->Source Root,这样使用的时候会用方法提示

3.时间、日期操作
time和datetime模块主要用于操作时间
时间有三种表示方式,一种是时间戳、一种是格式化时间、一种是时间元组
import time,datetime
time.sleep(1) 休息几秒
print(int(time.time())) # 获取当前时间戳 time.time()是float类型的,要用就转一下
print(time.strftime("%Y.%m.%d %H:%M:%S")) # 将时间元组转换成格式化输出的字符串
%Y年 %m 月份 %d天 %H小时 %M代表分钟 %S代表的是秒
print(time.struct_time) # 时间元组
print(time.asctime()) # 时间元转换成格式化时间
print(time.ctime()) # 时间戳转换成格式化时间
print(datetime.datetime.now()) # 当前时间格式化输出
print(datetime.datetime.now() + datetime.timedelta(3)) # 3天后的时间
print(datetime.datetime.now() + datetime.timedelta(-3)) # 3天前的时间

三、正则表达式
正则表达式就是用来查找字符串的,它能查找规则比较复杂的字符串
re模块是正则表达式模块,用来匹配一些特定的字符串
import re
1.常用的匹配语法
re.match 从头开始匹配
re.search 匹配包含
re.findall 把所有匹配到的字符放到以列表中的元素返回
re.splitall 以匹配到的字符当做列表分隔符
re.sub 匹配字符并替换

(1)match方法
match方法接收3个参数,第一个是匹配的规则,也就是正则表达式,第二个是要查找的字符串,
第三个参数不是必填的,用于控制正则表达式的匹配方式,看下面正则表达式的匹配模式。是从字符串的第一个单词中匹配字符串,如果匹配到返回一个对象,如果匹配不到,则返回None

import re
s = 'besttest is good'
print(re.match(r"be",s)) #打印的是一个对象
#字符串前面加r代表原字符串
print(re.match(r"be",s).group()) #查看结果
print(re.match(r'is',s))
结果:
<_sre.SRE_Match object; span=(0, 2), match='be'>
be
None

(2)search方法
search方法的参数和match一样,和match方法不一样的是,match是从字符串里面的第一个单词里面找,而search方法则是从字符串的整个内容里面找,如果找到了就返回第一个,找不到就返回None
import re
s = 'besttest is good is is is '
print(re.search(r'is',s).group())
结果:is
查找到就返回,只返回一个,可以用来判断

(3)findall方法
findall方法的参数上面的match、search一样,和他们不一样的是,findall会返回所有一个list,把所有匹配到的字符串,放到这个list里面,如果找不到的话,就返回一个空的list
import re
s = 'besttest is good is is is '
print(re.findall(r'is',s))
结果:['is', 'is', 'is', 'is']
print(re.findall(r'sss',s))
结果:[] #找不到结果为一个空列表
返回结果为一个list

(4)sub方法
sub方法和字符串的replace方法一样,是用来替换字符串的,把匹配到的值替换成一个新的字符串,接收3个参数,第一个是正则表达式,第二个是要替换成什么,第三个就是要查找的字符串,会返回一个新的字符串,如果匹配不到的话,返回原来的字符串
import re
s = 'besttest is good is is is '
print(re.sub(r'best','Best',s))
结果:Besttest is good is is is

(5)split方法
split 方法和字符串的split方法一样,是用来分割字符的,按照匹配到的字符串进行分割,返回的是一个list,如果匹配不到的话,那返回的list中还是原来的字符串
import re
s = 'besttest is good is is is '
print(re.split(r'best',s))
结果:['', 'test is good is is is ']

2.常用正则表达式符号:
(1)数量词
'*' 匹配*号前的字符0次或多次,只是*前面的一个字符
print(re.findall(r'be*','besttest very best b'))
结果:['be', 'be', 'b']

'+' 匹配前一个字符1次或多次,只是+前面的一个字符
print(re.findall(r'st+','besttest is best'))
结果: ['stt', 'st', 'st']

'?' 匹配前一个字符1次或0次,只是?前面的一个字符
print(re.findall(r'st?','besttest is best'))
结果:['st', 'st', 's', 'st']

'{m}' 匹配前一个字符m次
print(re.findall(r't{2}','besttest is best'))
结果: ['tt']

'{n,m}' 匹配前一个字符n到m次
print(re.findall(r't{1,2}','besttest is best'))
结果: ['tt', 't', 't']

(2)一般字符
'.' 默认匹配除\n之外的任意一个字符
print(re.findall(r'b.','besttest is good'))
结果:['be']

'\' 转译符,前面的* + ?这样的字符都有特殊含义了,如果你想就想找它的话,那就得转译了
意思就是说如果你想让特殊字符失去以前的含义,那么就得给它前面加上\
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'))
结果:['bes', 'bes', 'bej']

在[]里面如果用^的话代表取反,也就是不包括的这些字符串的
print(re.findall(r'be[^stac]','besttest is best bejson'))

(3)边界匹配
'^' 匹配以什么字符开头,多行情况下匹配每一行的开头
print(re.findall(r'^b','besttest is good'))
结果: ['b']
print(re.findall(r'^b','besttest is good\nbest',re.M))#多行模式
结果: ['b','b']

'$' 匹配以什么字符结尾,多行情况下匹配每一行的结尾
print(re.findall(r'd$','besttest is good'))
结果:['d']
print(re.findall(r'd$','besttest is good\nbest is good',re.M<span style="line-height:1.5;">))#多行模式</span> >>>['d','d']

'\A' 仅以什么字符开头,和^不同的是它不能用多行模式
print(re.findall(r'\Ab','besttest is good'))
结果: ['b']

'\Z' 仅以什么字符结尾,和$不同的是它不能用多行模式
print(re.findall(r'd\Z','besttest is good'))
结果:['d']

(4)预定义字符集合
'\d' 匹配数字0-9
print(re.findall(r'\d+','sdf2342312sdfs'))
结果: ['2342312']

'\D' 匹配非数字
print(re.findall(r'\D','sdf2342312sdfs'))
结果:['sdf', 'sdfs']

'\w' 匹配[A-Za-z0-9],也就是所有的字母和数字和中文
print(re.findall(r'\w','sdf234%^2312sdfs&'))
结果:['sdf234', '2312sdfs']

'\W' 匹配不是[A-Za-z0-9],也就是不是字母和数字
print(re.findall(r'\W','sdf234%^2312sdfs&'))
结果:['%', '^', '&']

'\s' 匹配空白字符、\t、\n、\r,空格
print(re.findall('\s','axss\n\tsdf\t\r\t'))
结果: ['\n', '\t', '\t', '\r', '\t']

'\S'匹配空白字符,不是\t、\n、\r,空格
print(re.findall('\s','axss\n\tsdf\t\r\t'))
结果:['\n', '\t', '\t', '\r', '\t']

3.正则匹配模式
正则匹配模式是用在match、search、findall里面的第三个参数,还有其他的模式,但是一般也用不到,就这两种能用到,别的就不记了
re.I: #忽略大小写
re.M: #多行模式,改变'^'和'$'的行为
re.findall('pattern', 'string',re.I)

(.*):贪婪模式,匹配尽可能多的字符
(.*?)或(.+?):匹配尽可能少的字符,一旦匹配到第一个就不往下走了

Python之模块、正则的更多相关文章

  1. python,re模块正则

    python没有正则需要导入re模块调用.正则表达式是为了匹配字符串,动态模糊的匹配,只要有返回就匹配到了, 没返回就没匹配到,前面是格式后面是字符串 最常用的匹配语法: re.match()#麦驰, ...

  2. Python(re模块,正则)

    day18 正则表达式用处? 匹配 字符串 s = 'hello world' print(s.find('llo'))#第一个的位置 ret = s.replace('ll','xx') print ...

  3. python自动化--模块操作之re、MySQL、Excel

    一.python自有模块正则 import re # re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None print(re.match("www ...

  4. Python使用re模块正则式的预编译及pickle方案

    项目上线要求当中有言论和昵称的过滤需求, 客户端使用的是python脚本, python脚本中直接利用re模块来进行正则匹配, 一开始的做法是开启游戏后, 每帧编译2条正则式, 无奈运营需求里面100 ...

  5. python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

    python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess ...

  6. Python全栈 正则表达式(re模块正则接口全方位详解)

    re模块是Python的标准库模块 模块正则接口的整体模式 re.compile 返回regetx对象 finditer fullmatch match search 返回 match对象 match ...

  7. python——re模块(正则表达)

    python——re模块(正则表达) 两个比较不错的正则帖子: http://blog.csdn.net/riba2534/article/details/54288552 http://blog.c ...

  8. Day05 - Python 常用模块

    1. 模块简介 模块就是一个保存了 Python 代码的文件.模块能定义函数,类和变量.模块里也能包含可执行的代码. 模块也是 Python 对象,具有随机的名字属性用来绑定或引用. 下例是个简单的模 ...

  9. python常用模块(1):collections模块和re模块(正则表达式详解)

    从今天开始我们就要开始学习python的模块,今天先介绍两个常用模块collections和re模块.还有非常重要的正则表达式,今天学习的正则表达式需要记忆的东西非常多,希望大家可以认真记忆.按常理来 ...

随机推荐

  1. 表单中的日期 字符串和Javabean中的日期类型的属性自动转换

    搞了一上午的bug最终还是因为自己springMVC的注解不熟悉的原因,特记录. 在实际操作中经常会碰到表单中的日期 字符串和Javabean中的日期类型的属性自动转换, 而springMVC默认不支 ...

  2. iOS开发——代码生成TabBar与视图切换具体解释

    我在之前多篇博客中解说了在不使用storyboard而使用nib文件的情况下.使用代码生成导航栏并进行跳转,具体能够參考<iOS开发--界面跳转与返回及视图类型具体解释><iOS纯代 ...

  3. hdu5396 Expression 区间dp +排列组合

    #include<stdio.h> #include<string> #include<map> #include<vector> #include&l ...

  4. 在InternetExplorer.Application中显示本地图片

    忘记了,喜欢一个人的感觉 Demon's Blog  »  程序设计  »  在InternetExplorer.Application中显示本地图片 « 对VBS效率的再思考——处理二进制数据 Wo ...

  5. 删除windows服务 cygwin sshd

    $ cygrunsrv -R sshd     删除ssd服务

  6. css高级:font-size

    body{ font:62.5%/1.6em "Lucida Grande",Verdana,Geneva,Helvetica,Arial,sansserif; }//font-s ...

  7. 解决myeclipse中struts2 bug问题包的替换问题

    由于struts2的bug问题,手工替换还是比較麻烦.但即便是最新的myeclipse2014也没有替换最新的struts2包,研究了一天,最终找到了解决的方法.下面就解决方法与大家分享一下. 1.在 ...

  8. 2015南阳CCPC H - Sudoku 数独

    H - Sudoku Description Yi Sima was one of the best counselors of Cao Cao. He likes to play a funny g ...

  9. 浅谈java缓存

    java中要用到缓存的地方很多,首当其冲的就是持久层缓存,针对持久层谈一下: 要实现java缓存有很多种方式,最简单的无非就是static HashMap,这个显然是基于内存缓存,一个map就可以搞定 ...

  10. Batch 拷贝远程机器文件到本机指定目录下

    net use * /del /yesNET USE Y: \\远程机IP\d$  登录密码 /user:domain\登录用户 set sourcePath="Y:\DOAutomatio ...