正则表达式
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
- 常用运算符与表达式:
^ 开始
() 域段
[] 包含,默认是一个字符长度
[^] 不包含,默认是一个字符长度
{n,m} 匹配长度
. 任何单个字符(. 字符点)
| 或
\ 转义
$ 结尾
[A-Z] 26个大写字母
[a-z] 26个小写字母
[0-9] 0至9数字
[A-Za-z0-9] 26个大写字母、26个小写字母和0至9数字
, 分割
.
- 实例:
字符串;tel:086-0666-88810009999
原始正则:"^tel:[0-9]{1,3}-[0][0-9]{2,3}-[0-9]{8,11}$"
速记理解:开始 “tel:普通文本”[0-9数字]{1至3位}"-普通文本"[0数字][0-9数字]{2至3位}"-普通文本"[0-9数字]{8至11位} 结束"
等价简写后正则写法:"^tel:\d{1,3}-[0]\d{2,3}-\d{8,11}$" ,简写语法不是所有语言都支持。
os模块
- 一、什么是os模块
os模块提供了多数操作系统的功能接口函数。当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,所以离不了os模块。python编程时,经常和文件、目录打交道,这是就离不了os模块,本节内容将对os模块提供的函数进行详细的解读
- 二、常用的os模块命令
os.name——name顾名思义就是’名字’,这里的名字是指操作系统的名字,主要作用是判断目前正在使用的平台,并给出操作系统的名字,如Windows
返回 ‘nt’; Linux 返回’posix’。注意该命令不带括号。os.getcwd()——全称应该是’get current work directory’,获取当前工作的目录,如:返回结果为:‘C:\Program
Files\Python36’。注意该命令带括号,除了第一个命令不带括号之外,以下命令基本都带括号。os.listdir(path)——列出path目录下所有的文件和目录名。Path参数可以省略。
os.remove(path)——删除path指定的文件,该参数不能省略。
os.rmdir(path)——删除path指定的目录,该参数不能省略。
os.mkdir(path)——创建path指定的目录,该参数不能省略。 注意:这样只能建立一层,要想递归建立可用:os.makedirs()
os.path.isfile(path)——判断指定对象是否为文件。是返回True,否则False
os.path.isdir(path)——判断指定对象是否为目录。是True,否则False。
os.path.exists(path)——检验指定的对象是否存在。是True,否则False.
os.path.split(path)——返回路径的目录和文件名,即将目录和文件名分开,而不是一个整体。此处只是把前后两部分分开而已。就是找最后一个’/’。
os.system(cmd)——执行shell命令。返回值是脚本的退出状态码,0代表成功,1代表不成功
os.chdir(path)——'change dir’改变目录到指定目录
os.path.getsize()——获得文件的大小,如果为目录,返回0
os.path.abspath()——获得绝对路径。
os.path.join(path, name)—连接目录和文件名,与os.path.split(path)相对。
os.path.basename(path)——返回文件名
os.path.dirname(path)——返回文件路径
datetime模块
datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1.
datetime模块定义了5个类,分别是
1.datetime.date:表示日期的类
2.datetime.datetime:表示日期时间的类
3.datetime.time:表示时间的类
4.datetime.timedelta:表示时间间隔,即两个时间点的间隔
5.datetime.tzinfo:时区的相关信息
http请求
- python内置了urllib包来处理http请求
- 第三方库–requests
发请get请求超级简单:
print requests.get('http://localhost:8080).text
就一句话,再来看看post请求
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)
print r.text
也很简单。
如果要认证:
url = 'http://localhost:8080'
r = requests.post(url, data={}, auth=HTTPBasicAuth('admin', 'admin'))
print r.status_code
print r.headers
print r.reason
题目
1.请用户输入一个时间,输出选项所对应的现在时间,告诉用户这两个时间相隔的天数,小时数,分钟数和秒数。
2.请用户输入电话及邮箱,判断用户输入是否合法。
3.对http://www.baidu.com 进行请求,并用正则化匹配图片内容。将百度图标爬取下来保存至本地
from datetime import datetime,timedelta
inputTime = input('请按照yyyy-mm-dd hh:mm:ss 的格式输入公式:')
inputTime= datetime.strptime(inputTime,'%Y-%m-%d %H:%M:%S')
now = datetime.now()
timeMargin = now - inputTime
print('您输入的时间为:','\n',inputTime)
print('当前的时间为:','\n',now)
print('时间间隔为{}天{}小时{}分钟{}秒'.format(timeMargin.days,timeMargin.seconds//(60*60),timeMargin.seconds%(60*60)//60,timeMargin.seconds%(60*60)%60))
import re
phoneNumber=input('请输入您的电话号码:')
p= re.compile(r'1[3,4,5,7,8]\d{9}')
phonematch = re.match(p,phoneNumber)
if phonematch:
print(phonematch.group())
else:
print("您输入的电话号码不合法")
emailNumber=input('请输入您的邮箱地址:')
e= re.compile(r"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$")
emailmatch = re.match(e,emailNumber)
if emailmatch:
print(emailmatch.group())
else:
print("您输入的邮箱不合法")
import re
from PIL import Image
from io import BytesIO
response = requests.get('https://www.baidu.com')
p1 = r"src=//(.+\.png)"
pattern1 = re.compile(p1)
pnglist = pattern1.findall(response.content.decode('utf-8'))
x = 0
for pngurl in pnglist:
png = requests.get("https://" + pngurl)
image = Image.open(BytesIO(png.content))
image.save(str(x) + '.png')
x += 1
参考文献
https://www.cnblogs.com/chuxiuhong/p/5885073.html
https://blog.csdn.net/menghuanshen/article/details/79055994
https://www.jianshu.com/p/9a9dd097d282
https://blog.csdn.net/qq_28304687/article/details/76551196