学习笔记

Python常用的内置模块

'''在真正做项目时,我们会使用别人已经开发好的模块,这样就不必从零开发项目了,还可以加快开发速度。
这些模块可能是Python官方提供的,也可能是第三方开发的。
Python官方开发的就叫做内置模块'''


print('------------数学计算模块--------------------')

print('在math模块中包含数学运算相关模块,例如指数、对数、平方根和三角函数等')

'''
函数                  说明
ceil(x)     返回大于或等于x的最小整数
floor(x)    返回小于或等于x的最大整数
sqrt(x)     返回x的平方根
pow(x,y)    返回x的y次幂的值
math.log(x[,base])  返回以x为底的x对数,若省略底数base,则计算x自然对数
sin(x)       返回弧度x的三角正弦
degrees(x)  将弧度x转换为角度
radians(x)  将角度x转换为弧度

'''
import math
print(math.ceil(2.3))   #3
print(math.ceil(-2.3))  #-2 #返回大于或等于x的最大整数
print(math.floor(2.3))  #2
print(math.floor(-2.3)) #-3#返回小于或等于x的最大正是朱
print(math.sqrt(9)) #3.0
print(math.pow(10,2))   #100    #10的2次方
print(math.log(125,5))  #3.0000000000000004
print(math.degrees(0.3*math.pi))    #54.0   #将弧度转换为角度
print(math.radians(360/math.pi))    #2.0    #将角度转换为弧度
print(math.sin(0.3) )   #0.29552020666133955








#日期时间模块datetime
'''Python官方提供的日期时间模块主要是datetime模块
datetime:包含日期和时间
date:只包含日期
time:  只包含时间
timedelta:计算时间跨度
tzinfo:时区信息
'''


print('-----------datetime类--------------')
'''datetime类表示日期和时间等信息,我们可以使用如下构造方法创建datetime对象:
datetime.datetime(year,month,day,hour=0,second=0,microsecond=0,tzinfo=none)

参数                      说明                             取值范围
year                年(不可以忽略)             datetime.MINYEAR< year<datetime.MAXYEAR
month            月(不可以忽略)            1-12           (超出取值范围会报ValueError)
day                 日(不可以忽略)            1-day-给定年份和月份,这时该月的最大天数
hour               小时(可以忽略)            0-23
minute          分钟(可以忽略)             0-59
second          秒(可以忽略)                 0-59       
microsecond 微秒(可以忽略)            0-1000000(一百万)
tzinfo          时区                                  无          
'''


import datetime
d=datetime.datetime(2022,2,22,23,56,56,100)
print(d)    #2022-02-22 23:56:56.000100

'''datetime类的常用方法如下:
datetime.today():   返回当前的本地日期和时间
datetime.now(tz=None):返回指定时区的当前日期和时间,参数tz用于设置时区,如果tz参数为None或被省略,则等同于today()。
datetime.fromtimestamp(timestamp,tz=None):返回与UNIX时间戳对应的本地日期和时间。
UNIX时间戳是从1970年1月1日00:00:00开始到现在为止的总秒数
'''
td=datetime.datetime.today()
print(td)   #当前日期和时间:2022-06-02 23:07:13.772148
now=datetime.datetime.now()
print(now)  #2022-06-02 23:08:25.927039


print('''------------date类---------------''')
'''
date类表示日期信息,我们可以用如下方法创建date对象
datetime.date(year,month,day)

date类的常用方法:
date.today:返回当前的本地日期
date.fromtimestamp(timestamp):返回与UNIX时间戳对应的本地日期
'''
d=datetime.date(2022,2,22)
print(d)    #2022-02-22

d2=datetime.date.today()
print(d2)   #2022-06-03(今日)

d3=datetime.date.fromtimestamp(9999999.999)
print(d3)   #1970-04-26


print('--------------time类-----------------------')
'''time类表示一天中的时间信息,我们可以用如下方法构造time对象:
datetime.time=(hour=0,minute=0,second=0,microsecond=0,tzinfo=None)
这些参数的含义和取值范围和datetime类一样
'''
dt=datetime.time(21,22,23,1923)
print(dt)   #21:22:23.001923



print('------------计算时间跨度类timedelta-----------------')
'''timedelta类用于计算datetime、date、和time对象的时间间隔
timedelta类的构造方法如下:
datetime.timedelta(days=0,seconds=0,microseconds=0,milliseconds=0,minutes=0,hours=0,weeks=0)
其中所有的参数都可以作为整数或浮点数,也可以为正数或负数
参数                      说明
day                     天
second                      秒
microsecond         微秒
milliseconds            毫秒
minute                      分钟
hour                    小时
weeks                   周
'''

d=datetime.date.today() #获取当前的本地日期
delta=datetime.timedelta(10)    #创建10天后的timedelta对象
d+=delta    #当前日期+10天
print(d)        #2022-06-13(10天后的日子)

d=datetime.date(2022,2,22)
delta=datetime.timedelta(weeks=3)   #创建5周后的timedelta对象
d-=delta    #指定日期减去指定时间间隔
print(d)    #2022-02-01 #指定日期往前推3个星期

#timedelta的参数可以是负数
d3=datetime.date(2022,2,22)
delta3=datetime.timedelta(weeks=-3)
d3+=delta3
print(d3)   #22022-02-01 #由于timedelta的参数是负数,那么就会日期就会往前推3个星期




print('-------------将日期时间与字符串相互转换-------------------')
'''将日期时间对象转换为字符串,称之为“日期时间格式化”
在Python中使用strftime()方法进行日期时间的格式化,在datetime、date以及time这3个类中都有一个实例方法strftime(format)。

将字符串转换为日期时间对象,叫做“日期时间解析”
在Python中使用datetime.strptime(date_string,format)类方法进行日期时间解析

在strftime()和strtptime()方法中都有一个格式化参数format,用来控制日期时间的格式,常用的日期和时间格式控制符如下所示

指令                      含义                                  示例
%m              两位月份表示                          01、02、12
%m              两位年份表示                          09、19
%y               4位年份表示                            2019、1998
%d               两位表示月中的一天                01、02、03
%H              两位小时表示(24小时制)      00、01、23
%I                两位小时表示(12小时制)      01、
%p               AM或PM区域性设置               AM、PM
%M              两位分钟表示                         01、59
%S               两位秒表示                             00、59
%f               以6位数表示微秒                      000000、000123、999999
%z               +HHMM或-HHMM形式的UTC偏移    +000、-400、+1030,如果没有设置时区则为空
%Z              时区名称                                    UTC、EST、CST,如果没有设置时区则为空
'''

d=datetime.datetime.today()
#设置日期时间格式化,表示4位年、2位月、2位天、2为小时(24小时制)、2位分以及2位秒
print(d.strftime('%Y-%m-%d %H:%M:%S'))            #2022-06-03 19:52:43
'''
如果一行代码是d.strftime('%Y-%m-%d %H:%M:%S')
然后print(d),好像没有效果?
'''

d2=datetime.datetime.today()
print(d2.strftime('%Y-%m-%d'))            #2022-06-03



str_date='2022-02-22 22:22:22'
date=datetime.datetime.strptime(str_date,'%Y-%m-%d %H:%M:%S')   #将一个字符串按照指定的格式解析为日期时间对象
print(date) #2022-02-22 22:22:22
'''在将一个字符串解析为日期时间对象时,需要注意:提供的字符串应该可以表示一个有效的日期时间字符串,否则就会发生ValueError异常'''





print('--------------------正则表达式模块re-------------------------')
'''正则表达式指的是预先定义好一个“字符串模板”,通过这个字符串模板可以匹配、查找和替换哪些匹配字符串模板的字符串'''

'''正则表达式实现的字符串操作效率更高功能更强,但难点是编写字符串模板,即正则表达式,
几乎所有编程语言的正则表达式都是通用的,Python中的正则表达式模块是re'''



print('------------字符串匹配--------------------------')
'''字符串匹配指验证一个字符串是否符合指定的“字符串模板”,常用于用户输入验证。
例如,用户在注册时需要输入邮箱,所以需要验证邮箱是否有效,这就要用到字符串匹配验证

可以用match(p,text)函数进行字符串匹配,其中的参数与p是正则表达式,即字符串模板,text是要验证的字符串。
如果匹配成功,则返回一个Match对象(匹配对象),否则返回None。
'''

import re
p=r'\w+@lingjie\.li'    #验证邮箱的正则表达式
#w是words,w+是匹配包含下划线内“_”的任何字母数字字符,相当于数据集【a-zA-Z0-9】
email='u@lingjie.li'    #要验证的邮箱字符串
m=re.match(p,email) #返回非空的match对象说明匹配成功
print(type(m))          #<class 're.Match'>





print('--------------字符串查找------------------------------------')
'''字符串查找指从一个字符串中查找匹配正则表达式的子字符串,常用于数据分析、网络爬虫等数据处理中'''

'''常用的字符串查找函数包括:
search(p,text):在text字符串中查找匹配的内容,如果找到,则返回第一个匹配的Match对象,否则返回None。p是正则表达式

findall(p,text):在text字符串中查找所有匹配的内容,如果找到,则返回所有匹配的字符串列表,如果没有匹配的内容,则返回None。p是正则表达式
'''

p=r'\w+@lingjie\.li'
text='我的邮箱是u@lingjie.li'
m=re.search(p,text)
print(m)    #match='我的邮箱是u@lingjie.li'>


p=r'Java|java|JAVA'
text='test java Java and JAVA'
match_list=re.findall(p,text)
print(match_list)   #['java', 'Java', 'JAVA']

#d+是匹配任意数字
p=r'\d+hello'
data='jia_jia 666hello com'
print(re.findall(p,data))   #['666hello']









print('-------------字符串替换----------------------')
'''正则表达式的字符串替换是sub(),该函数替换匹配的子字符串,返回值是替换之后的字符串
sub()语法格式如下:
re.sub(pattern,repl,string,count=0)
其中,参数与pattern是正则表达式,参数repl是用于替换的新字符串,参数string是即将被替换的旧字符串,参数与count是要替换的最大数量,默认是0(不限制替换数量)
'''
p=r'\d+'        #匹配数字(出现一次或多次)正则表达式
text='AB12CD33EF'
replace_text=re.sub(p,'',text)  #sub()函数省略参数count时,表示不限制替换数量
print(replace_text) #ABCDEF

replace_text=re.sub(p,'',text,count=1)  #count=1表示只替换第一个符合条件的字符对象
print(replace_text) #ABCD33EF

print('--------------字符串分割-------------------------')
'''在Python中可以使用re模块的split()函数进行字符串分割,
该函数将按照匹配的字符串进行字符串分割,返回字符串列表对象,其语法格式为:
re.split(pattern,string,maxsplit=0)
其中,pattern是正则表达式,string是要分割的字符串,maxsplit是最大分割次数,默认为0(表示没有限制)
'''
p=r'\d+'
text='ab12ab13cc'

clist=re.split(p,text)  #没有填写maxsplit参数则默认为0(无限制)
print(clist)    #['ab', 'ab', 'cc']

clist=re.split(p,text,maxsplit=1)   #只分割1次
print(clist)    #['ab', 'ab13cc']

发表回复