Python常用的内置模块

目录

数学计算模块——math

日期时间模块——datetime

datetime类

date类

time类

计算时间跨度类——timedelta

将日期时间与字符串相互转换

正则表达式模块——re

字符串匹配

字符串查找

字符串替换

字符串分割

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

数学计算模块——math

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

这里介绍math模块中的一些常用函数,如下表所示。

>>>import math # 引入math模块
>>>math.ceil(2.4)
3
>>>math.floor(2.4)
2
>>>math.ceil(-2.4)
-2
>>>math.floor(-2.4)
-3
>>>math.pow(5,3)
125.0
>>>math.sqrt(3.6)
1.8973665961010275
>>>math.log(125,5)
3.00000000000004
>>>math.degree(0.5*math.pi)
90.0
>>>math.radians(180/math.pi)
1.0
>>>math.sin(3.0)
0.29552020666133955

日期时间模块——datetime

Python官方提供的日期和时间模块主要是datetime模块。在datetime 模块中提供了以下几个类。 datetime:包含时间和日期。 date:只包含日期。 time:只包含时间。 timedelta:计算时间跨度。 tzinfo:时区信息。

datetime类

datetime类表示日期和时间等信息,我们可以使用如下构造方法创建datetime对象:

datatime.datetime(year,month,day,hour=0,minute=0,second=0,microsecond=0,tzinfo=None)

对这些参数的说明如下表所示。

>>>import datetime
>>>d=datetime.datetime(2020,2,30) # 指定的day参数产出范围,会发生ValueError异常
>>>d=datetime.datetime(2020,1,29)
>>>d
datetime.datetime(2020,1,29,0,0)
>>>d=datetime.datetime(2020,1,29,23,56,59,10000)
>>>d
datetime.datetime(2020,1,29,23,56,59,10000)

datetime类的常用方法如下。

datetime.today():返回当前的本地日期和时间。

datetime.now(tz=None):返回指定时区的当前日期和时间,参数tz用于设置时区,如果参数tz为None或省略,则等同于today()。

datetime.fromtimestamp(timestamp,tz=None):返回与UNIX时间戳对应的本地日期和时间。UNIX时间戳是从1970年1月1日00:00:00 开始到现在为止的总秒数。

>>>import datetime
>>>datetime.datetime.today()
datetime.datetime(2024,2,8,10,4,3,158533)
>>>datetime.datetime.now()
datetime.datetime(2024,2,8,10,4,13,828863)
>>>datetime.datetime.fromtimestamp(999999999.999) # 在Python中,时间戳的单位是秒
datetime.datetime(2001,9,9,9,46,39,999000)

date类

date类表示日期信息,我们可以使用如下构造方法创建date对象:

datetime.date(year,month,day)

这些参数的含义和取值范围与datetime类一样。

date类的常用方法如下。

date.today():返回当前的本地日期。

date.fromtimestamp(timestamp):返回与UNIX时间戳对应的本地日期。

>>>import datetime
>>>d=datetime.date(2020,2,30) # 若指定的day参数超出范围,则会发生ValueError异常
>>>d=datetime.date(2020,1,19)
datetime.date(2020,1,19)
>>>datetime.date.fromtimestamp(999999999.999)
datetime.date(2001,9,9)

time类

time类表示一天中的时间信息,我们可以使用如下构造方法创建time对象:

datetime.time(hour=0,minute=0,second=0,microsecond=0,tzinfo=None)

这些参数的含义和取值范围与datetime类一样。

>>>import datetime
>>>datetime.time(24,59,58,1999) # 指定的hour取值超出范围
>>>datetime.time(23,59,58,1999)
datetime.time(23,59,58,1999)

计算时间跨度类——timedelta

timedelta类用于计算datetime、date和time对象的时间间隔。timedelta类的构造方法如下:

datetime.timedelta(days=0,seconds=0,microseconds=0,milliseconds=0,minutes=0,hours=0,weeks=0)

其中的所有参数都可以为整数或浮点数,也可以为正数或负数,如下表所示。

>>>import datetime
>>>d=datetime.date.today()
>>>d
datetime.date(2020,1,19)
>>>delta=datetime.timedelta(10)
>>>d+=delta
>>>d
datetime.date(2020,1,29)
>>>d=datetime.date(2020,1,1)
>>>delta=datetime.timedelta(weeks=5)
>>>d-=delta
>>>d # 2020年1月1日前5周的日期
datetime.date(2019,11,27)

 timedelta可以表示正数或负数时间的间隔,如下代码是等效的。

delta=datetime.timedelta(weeks=5)
d-=delta

delta=datetime.timedelta(weeks=-5)
d+=delta

将日期时间与字符串相互转换

我们经常会遇到将日期时间与字符串相互转换的情况。

(1)将日期时间对象转换为字符串时,称之为日期时间格式化。在Python中使用strftime()方法进行日期时间的格式化,在datetime、date 和time三个类中都有一个实例方法strftime(format)。 (2)将字符串转换为日期时间对象的过程,叫作日期时间解析。在Python中使用datetime.strptime(date_string,format)类方法进行日期时间解析。

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

>>>import datetime
>>>d=datetime.datetime.today()
>>d.strftime('%Y-%m-%d %H:%M:%S')
'2020-01-19 17:07:13'
>>>d.strftime('%Y-%m-%d')
'2020-01-19'
>>>str_date='2020-02-29 10:40:26'
>>>date=datetime.datetime.strptime(str_date,'%Y-%m-%d %H:%M:%S')
>>>date
datetime.datetime(2020,2,29,10,40,26)

注意:在将一个字符串解析为日期时间对象时,需要注意:提供的字符串应该可以表示成一个有效的日期时间字符串,否则会发生ValueError异常。即要是合理的日期时间范围,并且按照上面格式化的格式进行书写。

正则表达式模块——re

正则表达式指预先定义好一个“字符串模板”,通过这个“字符串模板”可以匹配、查找和替换那些匹配“字符串模板”的字符串。

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

字符串匹配

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

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

>>>import re # 导入re模块
>>>p=r'\w+@zhijieketang\.com' # 验证邮箱的正则表达式
>>>email1='tony_guan588@zhijieketang.com' # 要验证的邮箱字符串
>>>m=re.match(p,email1) # 返回非空的Match对象,说明匹配成功
>>>type(m)
<class 're.Match>
>>>m
<re.Match object;span=(0,29),match='tony_guan588@zhijieketang.com> # 输出Match对象,spam指字符串跨度,(0,29)表示找到的字符串位置,0指开始位置索引,29指结束位置索引
>>>email2='tony_guan588@163.com'
>>>m=re.match(p,email2)
>>>m
None # 返回None表示匹配失败

正则表达式本身有很多斜杠(\)等特殊字符,如果采用普通字符串表示,则需要将特殊字符进行转义,所以普通字符串的表示是'\\w+@zhijieketang\\.com',写起来很麻烦,推荐使用原始字符串表示正则表达式。

字符串查找

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

常用的字符串查找函数如下。

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

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

>>>import re
>>>p=r'\w+@zhijieketang\.com'
>>>text="Tony's email is tony_guan588@zhijieketang.com." # 表示要查找的字符串
>>>m=re.search(p,text) # 查找成功,返回Match对象
>>>m
<re.Match object;span=(16,45),match='tony_guan588@zhijieketang.com'>
>>>text="Tony's email is tony_guan588@163.com."
>>>m=re.search(p,text)
>>>m
None
>>>p=r'Java|java|JAVA' # 验证java单词的正则表达式,正则表达式中的竖线|表示或关系
>>>text='I like Java and java and JAVA.'
>>>match_list=re.findall(p,text) # 返回匹配的字符串列表
>>>match_list
['Java','java','JAVA']

字符串替换

正则表达式的字符串替换函数是sub(),该函数替换匹配的子字符串,返回值是替换之后的字符串,其语法格式如下:

re.sub(pattern,repl,string,count=0)

其中,参数pattern是正则表达式;参数repl是用于替换的新字符串 ;参数string是即将被替换的旧字符串;参数count是要替换的最大数量 ,默认值为零,表示不限制替换数量。

>>>import re
>>>p=r'\d+' # 匹配数字(出现一次或多次)正则表达式
>>>text='AB12CD34EF'
>>>replace_text=re.sub(p,' ',text)
>>>replace_text
'AB CD EF'
>>>replace_text=re.sub(p,' ',text,count=1)
>>>replace_text
'AB CD34EF'

字符串分割

在Python中使用re模块中的split()函数进行字符串分割,该函数按照匹配的子字符串进行字符串分割,返回字符串列表对象,其语法格式如下:

re.split(pattern,string,maxsplit=0)

其中,参数pattern是正则表达式;参数string是要分割的字符串;参数maxsplit是最大分割次数;maxsplit的默认值为零,表示分割次数没有限制。

>>>import re
>>>p=r'\d+'
>>>text='AB12CD34EF'
'AB CD EF'
>>>clist=re.split(p,text)
>>>clist
['AB','CD','EF']
>>>clist=re.split(p,text,maxsplit=1)
>>>clist
['AB','CD34EF']
  • 26
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

互联网的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值