1、数学计算模块—math
示例代码:
>>> import math
>>> math.ceil(2.4)
3
>>> math.floor(2.4)
2
>>> math.sqrt(36)
6.0
>>> math.pow(2,3)
8.0
>>> math.log(125,5)
3.0000000000000004
>>> math.sin(0.3)
0.29552020666133955
>>> math.degrees(math.pi/2)
90.0
>>> math.radians(180/math.pi)
1.0
2、日期时间模块–datetime
datetime模块包含以下几个类:
datatime: 包含时间和日期
date: 只包含日期
time: 只包含时间
timedelta: 计算时间跨度
tzinfo: 时区信息
datetime类的常用方法:
#datetime.today()返回当前的本地日期和时间
>>> datetime.datetime.today()
datetime.datetime(2025, 2, 10, 20, 57, 31, 116623)
#datetime.now(tz=None)返回指定时区的当前日期和时间,参数tz用于设置时区,如果参数tz为None或省略,则等同于today()
>>> import pytz
>>> import datetime
>>> tz_shanghai = pytz.timezone('Asia/Shanghai')
>>> datetime.datetime.now(tz=tz_shanghai)
datetime.datetime(2025, 2, 10, 21, 4, 38, 944545, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)
#datetime.fromtimestamp(timestamp,tz=None),返回与UNIX时间戳对应的本地日期和时间。UNIX时间戳是从1970年1月1日00:00:00开始到现在为止的总秒数
>>> datetime.datetime.fromtimestamp(999999999.999)
datetime.datetime(2001, 9, 9, 9, 46, 39, 999000)
date类常用方法:
#date.today()返回当前的本地日期
>>> datetime.date.today()
datetime.date(2025, 2, 10)
#date.fromtimestamp(timestamp)返回与UNIX时间戳对应的本地日期
>>> datetime.date.fromtimestamp(999999999.999)
datetime.date(2001, 9, 9)
timedelta用法:
>>> current_time = datetime.date.today()
>>> delta_10days = datetime.timedelta(10) #创建10天后的timedelta对象
>>> future_time = current_time+delta_10days #当前日期+10days
>>> future_time
datetime.date(2025, 2, 20)
>>> current_time = datetime.date.today()
>>> delta_5weeks = datetime.timedelta(weeks=5) #创建5周后的日期
>>> future_time = current_time-delta_5weeks #当前日期-5weeks
>>> future_time
datetime.date(2025, 1, 6)
3、日期时间对象与字符串相互转换
(1) 将日期时间对象转换为字符串的过程,叫做日期时间格式化。Python中使用strftime(farmat)实例方法进行日期时间格式化
(2) 将字符串转换为日期时间对象的过程,叫做日期时间解析。Python中是使用datetime.strptime(date_string,format)类方法进行日期时间解析
示例代码:
>>> current_time = datetime.datetime.today()
>>> current_time.strftime('%Y-%m-%d %H:%M:%S')
'2025-02-10 22:12:17'
>>> str_date = '2020-02-29 10:40:26'
>>> datetime.datetime.strptime(str_date,'%Y-%m-%d %H:%M:%S')
datetime.datetime(2020, 2, 29, 10, 40, 26)
4、正则表达式模块–re
4-1、字符串匹配
match(p,text)函数
参数p是正则表达式,即字符串模板。
text是要验证的字符串。匹配成功则返回一个Match对象,否则返回None
示例代码:
>>> import re
>>> p = r'\w+@qq\.com' #\w+:匹配一个或多个单词字符(字母、数字或下划线)
>>> email1 = '1476821@qq.com'
>>> m = re.match(p,email1)
>>> m
<re.Match object; span=(0, 14), match='1476821@qq.com'>
>>> email2 = '345876@163.com'
>>> m = re.match(p,email2)
>>> m
>>> #返回为None,表示匹配失败
4-2、字符串查找
search(p,text)函数:在text字符串查找匹配的内容,如果找到,则返回第1个匹配的Match对象,否则返回None。p是正则表达式
findall(p,text)函数:在text字符串中查找所有匹配的内容,如果找到,则返回所有匹配的字符串列表;如果一个都没有匹配,则返回None。p是正则表达式
示例代码:
>>> import re
>>> p = r'\w+@qq\.com' #\w+:匹配一个或多个单词字符(字母、数字或下划线)
>>> email2 = '1476821@qq.com,345687@qq.com'
>>> m = re.search(p,email2) #只返回第1个匹配的Match对象
>>> m
<re.Match object; span=(0, 14), match='1476821@qq.com'>
>>> m = re.findall(p,email2) #返回所有匹配的字符串列表
>>> m
['1476821@qq.com', '345687@qq.com']
4-3、字符串替换
sub()函数
语法格式:re.sub(pattern,repl,string,count=0)
pattern是正则表达式
repl是用于替换的新字符串
string是旧字符串
count是要替换的最大数量,默认值为零,表示不限制替换数量
示例代码:
>>> import re
>>> p = r'\d+'
>>> text = 'AB12CD34EF'
>>> rep_text = re.sub(p,' ',text)
>>> rep_text
'AB CD EF'
>>> import re
>>> p = r'\d+'
>>> text = 'AB12CD34EF'
>>> rep_text = re.sub(p,' ',text,count=1)
>>> rep_text
'AB CD34EF'
4-4、字符串分割
split()函数
语法格式:re.split(pattern,string,maxsplit=0)
pattern是正则表达式
string是要分割的字符串
maxsplit是最大分割次数,默认是为0,表示分割次数没有限制
示例代码:
>>> import re
>>> p = r'\d+'
>>> text = 'AB12CD34EF'
>>> split_text = re.split(p,text)
>>> split_text
['AB', 'CD', 'EF']
>>> import re
>>> p = r'\d+'
>>> text = 'AB12CD34EF'
>>> split_text = re.split(p,text,maxsplit=1)
>>> split_text
['AB', 'CD34EF']
发表回复