Python学习笔记——第十一章、常用的内置模块

第十一章 常用的内置模块

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

11.1 数学计算模块——math

在math模块中包含数学运算相关的函数等,例如指数、对数、平方根和三角函数等。
在这里插入图片描述

import math
#返回>或=的最小整数
print(math.ceil(2.4))
#返回小于或等于的最小整数
print(math.floor(2.4))
#返回x的y次幂
print(math.pow(5,3))
#返回x的平方根
print(math.sqrt(3.6))
#返回以5为底,125的对数
print(math.log(125,5))
#将弧度转化为角度
print(math.degrees(0.5*math.pi))
#将角度转化为弧度
print(math.radians(180/math.pi))
#返回弧度x的三角正弦
print(math.sin(0.3))

>>> 
3
2
125.0
1.8973665961010275
3.0000000000000004
90.0
1.0
0.29552020666133955
>>> 

11.2 日期时间模块——datetime

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

11.2.1 datetime类

datetime类表示日期和时间等信息,我们可以使用如下构造方法创建datetime对象:
在这里插入图片描述
对这些参数的说明如下表所示。

在这里插入图片描述
datetime类的常用方法如下。
datetime.today():返回当前的本地日期和时间。
datetime.now(tz=None):返回指定时区的当前日期和时间,参数t
z用于设置时区,如果参数tz为None或省略,则等同于today()。
datetime.fromtimestamp(timestamp,tz=None):返回与UNIX时间
戳对应的本地日期和时间。UNIX时间戳是从1970年1月1日00:00:00
开始到现在为止的总秒数。

import datetime
print(datetime.datetime.today())
print(datetime.datetime.fromtimestamp(10))
print(datetime.datetime.fromtimestamp(60))
2023-07-28 18:25:17.886492
1970-01-01 08:00:10
1970-01-01 08:01:00

11.2.2 date类

date类表示日期信息,我们可以使用如下构造方法创建date对象:
在这里插入图片描述
date类的常用方法如下。
date.today():返回当前的本地日期。
date.fromtimestamp(timestamp):返回与UNIX时间戳对应的本地日期。

11.2.3 time类

time类表示一天中的时间信息,我们可以使用如下构造方法创建time对象:
在这里插入图片描述

import datetime
print(datetime.time(12,56,45))
12:56:45

11.2.4 计算时间跨度类——timedate

在这里插入图片描述
其中的所有参数都可以为整数或浮点数,也可以为正数或负数,如右表所示。
在这里插入图片描述

import datetime
print(datetime.time(12,56,45))
d=datetime.date.today()#当前日期
print(d)
delta =datetime.timedelta(10)#10天后
d=d+delta
print(d)
delta =datetime.timedelta(weeks=5)#5周后
d=d+delta
print(d)
12:56:45
2023-07-29
2023-08-08
2023-09-12

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

我们经常会遇到将日期时间与字符串相互转换的情况。
1 将日期时间对象转换为字符串时,称之为日期时间格式化。在Python中使用strftime()方法进行日期时间的格式化,在datetime、date和time三个类中都有一个实例方法strftime(format)。

2 将字符串转换为日期时间对象的过程,叫作日期时间解析。在Python中使用datetime.strptime(date_string,format)类方法进行日期时
间解析。

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

在这里插入图片描述

import datetime
d=datetime.datetime.today()
print(d.strftime('%Y-%m-%d  %H: %M:%S'))#日期时间格式化字符串

#将一个字符串解析为日期时间格式
str_date='2023-07-29 21:07:56'
date=datetime.datetime.strptime(str_date,'%Y-%m-%d %H:%M:%S')
print(date)

2023-07-29  21: 10:49
2023-07-29 21:07:56

11.3 正则表达式模块——re

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

正则语法:

# 1、数字和字母都表示它本身, . 表示匹配除了换行以外的任意字符,	\. 表示匹配 .
# 2、很多字母前面添加 \ 会有特殊含义
	- \n:换行
	- \t:制表符
    - \d: 匹配数字,等价[0-9]
    - \D:非数字,等价于[^0-9]
    - \w:表示数字、字母以及下划线,中文,等价于[0-9a-zA-Z_]
    - \W:表示\w取反
    - \s:表示任意的非打印字符(空格、换行、制表符)
    - \S:表示非空白字符
# 3、绝大多数标点都有特殊含义
    -  .:匹配任意一个字符,除了(\n)
	- ():用来表示一个分组,如果需要表示括号,需要使用 \
	- []: 匹配范围,[0-9] 表示0~9范围中的一个,[0-9a-zA-Z]
	- |: 表示或者的意思 re.search(r'f(x|y|z)m','pdsfxm')   匹配fxm
	- {},{2,},{,3},{1,3}:用来限定前面元素出现的次数  re.search(r'go{2}d''good')
	- *: 表示前面的元素出现的次数为0次及以上,等价于{0,}
	- +: 表示前面的元素出现的次数为1次及以上,等价于{1,}
	- ^:以指定的内容开头,或者取反的意思
	- $:以指定的内容结尾
# 4、 ? 的两种用法
	- 规定前面元素出现的次数最多只能出现1次,等价于{,1}
	- 将贪婪模式转换为非贪婪模式(重点)	

11.3.1 字符串匹配

字符串匹配指验证一个字符串是否符合指定的“字符串模板”,常用于用户输入验证。例如,用户在注册时要输入邮箱,所以需要验证邮箱是否有效,这就要用到字符串匹配验证。
我们使用match(p,text)函数进行字符串匹配,其中的参数p是正则表达式,即字符串模板,text是要验证的字符串。如果匹配成功,则返回一个Match对象(匹配对象),否则返回None。

import re
s = re.match('....','assgkdlgjelasgrt')  
print(s.group())                             
text = re.match('as.','assgkdlgjelasgrt')  
print(text) 
text=re.match('ed.','assgkdlgjelasgrt')
print(text)

assg
<re.Match object; span=(0, 3), match='ass'>
None

11.3.2 字符串查找

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

  1. search(p,text):在text字符串中查找匹配的内容,如果找到,则返回第1个匹配的Match对象,否则返回None。p是正则表达式。
  2. findall(p,text):在text字符串中查找所有匹配的内容,如果找到,则返回所有匹配的字符串列表;如果一个都没有匹配,则返回None。p是正则表达式。
re.match函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

re.search方法
re.search 扫描整个字符串并返回第一个成功的匹配。

re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;

re.search匹配整个字符串,直到找到一个匹配。
import re
s = "i love python very much, python is my favorite."
pat = 'python'
result = re.search(pat,s)
print(result)
print(result.span())
<re.Match object; span=(7, 13), match='python'>
(7, 13)
import re
s = "i love python very much, python is my favorite."
pat = 'python'
math_list = re.findall(pat,s)
print(math_list)
['python', 'python']

11.3.3 字符串替换

正则表达式的字符串替换函数是sub(),该函数替换匹配的子字符串,返回值是替换之后的字符串,其语法格式如下:
在这里插入图片描述
其中,参数pattern是正则表达式;参数repl是用于替换的新字符串;参数string是即将被替换的旧字符串;参数count是要替换的最大数量,默认值为零,表示不限制替换数量。


import re

P = r'\d+'
test = 'AB12CD34EF'
repace_test = re.sub(P,' ',test)
print(repace_test)
repace_test = re.sub(P,' ',test,count=1)
print(repace_test)

AB CD EF
AB CD34EF

11.3.4 字符串分割

在Python中使用re模块中的split()函数进行字符串分割,该函数按照匹配的子字符串进行字符串分割,返回字符串列表对象,其语法格式如下:
在这里插入图片描述
其中,参数pattern是正则表达式;参数string是要分割的字符串;参数maxsplit是最大分割次数;maxsplit的默认值为零,表示分割次数没有限制。

import re
p=r'\d+'
text='AB12CD34EF'
clist=re.split(p,text)
print(clist)
clist=re.split(p,text,maxsplit=1)
print(clist)

['AB', 'CD', 'EF']
['AB', 'CD34EF']
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值