Python小白入门的学习记录 5

162 阅读4分钟

标准库

docs.python.org/zh-cn/3.7/l…

常用库

正则表达式库re

进行匹配和搜索

匹配(match)

①匹配一个字符

import re
#匹配
p=re.compile('a') #要匹配a
print(p.match('a'))#被匹配

所示结果:<re.Match object; span=(0, 1), match='a'>

匹配结果从0到1 匹配一个字符 匹配对象为a

②匹配多个字符

p=re.compile('ca*t') # a字符匹配 加*
print(p.match('caaaat'))

所示结果:<re.Match object; span=(0, 6), match='caaaat'>

正则表达式的元字符

. 匹配任意的单个字符

p=re.compile('...')
print(p.match('bat'))

所示结果:<re.Match object; span=(0, 3), match='bat'>

^ 以什么样的内容做开头

$ 以什么样的内容做结尾

*匹配前方字符出现的零次或多次

phone='123-456-789 #这是一串电话号码'
p=re.sub(r'#.*$','',phone)
print(p)

所示结果:123-456-789

?匹配前方字符出现的零次或一次

{1} 前方字符要出现的指定次数 1次

p=re.compile('.{3}')#任意字符出现3次
print(p.match('bat'))

{4,6} 前方字符要出现的指定次数4次到6次

[ ] 中括号里的一个任意字符匹配成功则都能匹配成功

| 字符选择左边或者右边

+ 匹配前方字符出现的一次或多次

() 进行分组

\d 匹配的内容为一串数字

p=re.compile(r'(\d+)-(\d+)-(\d+)')#数字匹配  r保持不转意 保持原样输入 #分组 #数字多次出现 +
print(p.match('2021-04-13').group()) #group 取出某一部分 ()默认全部取出 (1)取出第一个分组括号的内容
print(p.match('2021-04-13').groups()) #groups 全部分组取出

所示结果:
2021-04-13
('2021', '04', '13')

\D 匹配的内容不包含数字

phone='123-456-789 #这是一串电话号码'
p2=re.sub(r'\D','',p)
print(p2)

所示结果:123456789

\s 匹配的内容为字符串

^$ 空行

.*? 不使用贪婪模式

匹配多次 (findall)

搜索(search)

与complie中元字符的第一个字符和search的第一个字符进行匹配,如果匹配失败,与第二次字符进行匹配只到匹配成功

import re
p=re.compile(r'(\d+)-(\d+)-(\d+)')
print(p.search('aa2021-04-13bb'))

所示结果:<re.Match object; span=(2, 12), match='2018-05-10'>
(2,12)匹配字符的位置

替换(sub)

sub('元字符','被替换的内容','要替换的完整字符串')

phone='123-456-789 #这是一串电话号码'
p=re.sub(r'#.*$','',phone) # #.$ 从#后开始的任意字符
print(p)

所示结果:123-456-789

日期与时间函数库

时间的查看(time)

import time
print(time.time())#1970.1.1到现在的秒数
print(time.localtime())#当前的年月日和秒数
print(time.strftime('%Y-%m-%d %H:%M:%S'))#自定格式化输出 年月日 小时分组秒

所示结果:time.struct_time(tm_year=2021, tm_mon=4, tm_mday=14, tm_hour=17, tm_min=28, tm_sec=20, tm_wday=2, tm_yday=104, tm_isdst=0)
2021-04-14 17:28:20

时间的修改(datetime)

import datetime
print(datetime.datetime.now())#现在时间
newtime=datetime.timedelta(minutes=10)  #设置偏移量为10分钟
print(datetime.datetime.now()+newtime)   #现在的时间过了十分钟以后的时间



#固定日期的时间偏移
oneday=datetime.datetime(2018,5,20)
newday=datetime.timedelta(days=10)
print(oneday+newday)

所示结果:
2021-04-14 17:37:30.217509
2021-04-14 17:47:30.217509
2018-05-30 00:00:00

数字相关库(random)

random:从限定条件中产生随机数

import random
print(random.randint(1,5))#抽取15的随机数
print(random.choice(['aa','bb','cc','dd'])) #抽取随机的字符串

所示结果:
2
cc

文件与目录的操作库

linux命令行文件和目录访问

ls 查看文件内容

ls -l 区分文件和文件夹。名称前带- 则为文件,名称以d开头则为文件夹。

pwd 查看当前文件夹的所在位置

cd 访问其他位置文件夹

cd /tmp 访问根目录(绝对路径)

cd .. 访问上级目录(相对路径)

cd ./tmp 访问当前目录的下一级目录

mkdir -p /temp/a/b/c 建立文件夹

rmdir g 删除文件夹

rm -rf /temp/a 删除所有文件

文件库(os)

①os.path

import os
print(os.path.abspath('.'))#根本相对路径. 获取绝对路径
print(os.path.abspath('..'))#上级目录
print(os.path.exists('l'))#目录是否存在
print(os.path.isfile('/PycharmProject'))#判断是否为文件
print(os.path.isdir('learn'))#判断是否为目录
os.path.join('/tep/a/' 'b/c')# #路径拼接

所示结果:
D:\PycharmProjects\learnPython\learn
D:\PycharmProjects\learnPython
False
False
False

②os.pathlib

import os
from pathlib import Path
p=Path('.')#对.进行封装使其成为path类型
print(p.resolve())# 获取相对路径对应的绝对路径
p.is_dir() #判断是否为目录

#新建目录
q=Path('/tmp/a')#新建目录的完整路径
Path.mkdir(q,parents=True) #第一个参数为新建目录的路径 第二个参数parents 指的是上一级目录若不存在则自动创建

tips: 绝对路径是指文件在硬盘上真正存在的路径,例如“bg.jpg”这个图片是存放在硬盘的“E:\book\网页布局代码\第2章”目录下,那么 “bg.jpg”这个图片的绝对路径就是“E:\book\网页布\代码\第2章\bg.jpg"。

相对路径就是相对于自己的目标文件位置

相对路径使用“/”字符作为目录的分隔字符,而绝对路径可以使用“\”或“/”字符作为目录的分隔字符