学习笔记(六)模块、包、正则表达式

来源:互联网 发布:万能网络摄像头软件 编辑:程序博客网 时间:2024/05/23 14:52

1.定义
 模块:用来从逻辑上组织python代码,本质就是.py结尾的python文件。
 包:用来从逻辑上组织模块的,本质就是一个目录(必须带有init.py文件)__int.py用于标识当前文件夹是一个包。
2.import本质
 导入模块的本质就是把python文件解释一遍
 import modelName->modelName.py->modelName.py的路径->sys.path
导入包的本质就是执行该包下的init.py文件

3.内置模块
 (1).time和datetime
  a.时间戳(timestamp)
  b.格式化时间字符串
  c.元祖(struct_time)
 a->c:gmtime(结果为UTC时区) localtime(UTC+8时区)
 c->a:mktime
 c->b:strftime(format,time_tuple)
 b->c:strptime(string,format)

 (2).random

    random.randint(x,y)#随机产生[x,y]之间的数        random.randrange(x,y)#随机产生[x,y)之间        random.choice()#从(列表or字符串or元祖)中随机抽取一个        random.sample('str',n)#从str中随机抽取n个字符        random.random()#随机浮点数        random.uniform(x,y)#随机产生x,y中间的浮点数

 (3).sys

        sys.argv #命令行参数list,第一个元素是程序本身路径        sys.exit(0)#退出        sys.maxint #最大的int值        sys.path#返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值        sys.platform #返回操作系统平台名称

 (4).shutil#文件的copy、压缩包

        shutil.copyfileobj(src,dst.length)        shutil.copyfile(src,dst)#拷贝文件        shutil.copymode(src,dst)#仅拷贝权限。内容、组、用户均不变        shutil.copystat(src,dst)#拷贝状态的信息        shutil.copy(src,dst)#拷贝文件和权限        shutil.copy2(src,dst)#拷贝文件和状态信息        shutil.copytree(src,dst,symlinks=False,ignore=Nono)#递归的去拷贝文件        shutil.rmtree(file)#递归删除文件        shutil.move(src,dst)#递归的移动文件        shutil.make_archive(base_name,format,...)#base_name(文件名)、fromat(压缩包种类)主要是调用ZipFile和TarFile

 (5).hashlib#用于加密相关的操作

       import hashlib        m=hashlib.md5()        m.update(b"Hello")        print(m.hexdigest())        m=hashlib.sha1()        m.update(b"Hello")        print(m.hexdigest())        import  hmac        m=hmac.new(b"Hello","It`s me".encode(encoding="utf-8"))        print(m.hexdigest())        print(m.digest())

 (6).json和pickle
json#把数据进行序列化,python在内存中的数据类型不能直接写到文件(只存字符串 OR bytes)中去,必须转成(dump)字符串且数据不发生损坏。
#解决不同平台不同语言之间的数据交换

    pickle#用于python特有的类型和python的数据类型间进行转换    import shelve    shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式

4.正则表达式

''''.'     默认匹配除\n之外的任意一个字符,若指定falg dotall,则匹配任意字符,包括换行'^'     匹配字符串的开始位置。若设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。'?'     匹配?号前面的字符一次或0次~{0,1}'+'     代表匹配前一个字符一次或多次'$'     匹配输入字符串的结束位置'*'     匹配*号前的字符,0次或多次'\A'    只从字符开头开始匹配,\A[0-9]'\Z'    匹配字符结尾,[a-z]\Z'\d'    匹配0-9'\D'    匹配非数字'\w'    匹配[A-Z,a-z,0-9]'\W'    匹配非[A-Z,a-z,0-9]'[a-z]' 匹配指定范围内的任意字符。'{n,m}' 最少匹配n次且最多匹配m次'{m}'   匹配m次'|'     两个匹配条件进行逻辑“或”'(...)' 分组匹配'\s'    匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。'\S'    匹配任何可见字符。等价于[^ \f\n\r\t\v]。'''import reres=re.match("^.+","helloworld123")#从字符串头开始往后匹配#res=re.search()#整个文本内匹配包含#res=re.findall("[0-9]{3}","123hjk345kl464")#把所有匹配到的字符放到以列表中的元素返回#res=re.split("[0-9]","asf1234df23af")#以匹配到的字符当散列表分隔符#res=re.sub(pattern,replace,string,count)#匹配字符并替换,count代表替换次数res=re.search("(?P<id>[0-9]+)","asdf1234asdf")print(res.group())print(res.groupdict())res=re.search("(?P<id>[0-9]+)(?P<name>[a-zA-Z]+)","asdf1234asdf")print(res)print(res.group())print(res.groupdict())res=re.search("(?P<Province>[0-9]{4})(?P<city>[0-9]{2})(?P<bir>[0-9]{4})","123321199008171021")print(res.groupdict())res=re.split("[0-9]+","asf1234df23af")print(res)#re.I(re.IGNORECASE)#忽略大小写res=re.search("[a-z]+","adfA",flags=re.IGNORECASE)print(res)#re.S(re.s)#改变.的任意匹配模式,不将\n除外res=re.search(r".+","\nadf\nadf",flags=re.S)print(res)
原创粉丝点击