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

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 re
res=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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值