Task目录
1.类和对象
2.正则表达式
3.re模块
4.datetime模块学习
5.http请求
1.类和对象
- 常用术语概述
- Python面向对象术语
- 类的基本构建
- 类的构造函数
- 类的属性
- 类的方法
- 类的析构函数
-
小结
- 类的保留属性
- 类的保留方法
- 类继承的构建
- Python最基础类
- 类的属性重载
- 类的方法重载
- 类的多继承
2.正则表达式
正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。而在python中,通过内嵌集成re模块,人们可以直接调用来实现正则匹配。
部分元字符及其说明。
. 代表任意字符
| 逻辑或操作符
[ ] 匹配内部的任一字符或子表达式
[^] 对字符集和取非
- 定义一个区间
\ 对下一字符取非(通常是普通变特殊,特殊变普通)
* 匹配前面的字符或者子表达式0次或多次
*? 惰性匹配上一个
+ 匹配前一个字符或子表达式一次或多次
+? 惰性匹配上一个
? 匹配前一个字符或子表达式0次或1次重复
{n} 匹配前一个字符或子表达式
{m,n} 匹配前一个字符或子表达式至少m次至多n次
{n,} 匹配前一个字符或者子表达式至少n次
{n,}? 前一个的惰性匹配
^ 匹配字符串的开头
\A 匹配字符串开头
$ 匹配字符串结束
[\b] 退格字符
\c 匹配一个控制字符
\d 匹配任意数字
\D 匹配数字以外的字符
\t 匹配制表符
\w 匹配任意数字字母下划线
\W 不匹配数字字母下划线
3. re模块
1 re.match函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
函数语法:
re.match(pattern, string, flags=0)
2 re.search方法
re.search 扫描整个字符串并返回第一个成功的匹配。
函数语法:
re.search(pattern, string, flags=0)
re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;
而re.search匹配整个字符串,直到找到一个匹配。
3 检索和替换
Python 的re模块提供了re.sub用于替换字符串中的匹配项。
语法:
re.sub(pattern, repl, string, count=0, flags=0)
4 findall
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
注意: match 和 search 是匹配一次 findall 匹配所有。
语法格式为:
findall(string[, pos[, endpos]])
5 正则表达式模式
模式字符串使用特殊的语法来表示一个正则表达式:
字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。
多数字母和数字前加一个反斜杠时会拥有不同的含义。
标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。
反斜杠本身需要使用反斜杠转义。
由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们。模式元素(如 r'\t',等价于 \\t )匹配相应的特殊字符。
下表列出了正则表达式模式语法中的特殊元素。如果你使用模式的同时提供了可选的标志参数,某些模式元素的含义会改变。
4.datetime模块学习
Python中提供了多个用于对日期和时间进行操作的内置模块:time模块、datetime模块和calendar模块。其中time模块是通过调用C库实现的,所以有些方法在某些平台上可能无法调用,但是其提供的大部分接口与C标准库time.h基本一致。time模块相比,datetime模块提供的接口更直观、易用,功能也更加强大。
datetime模块提供了处理日期和时间的类,既有简单的方式,又有复杂的方式。它虽然支持日期和时间算法,但其实现的重点是为输出格式化和操作提供高效的属性提取功能。
1.datetime模块中定义的类
datetime模块定义了以下几个类:
datetime.date:表示日期,常用的属性有:year, month和day
datetime.time:表示时间,常用属性有:hour, minute, second, microsecond
datetime.datetime:表示日期时间
datetime.timedelta:表示两个date、time、datetime实例之间的时间间隔,分辨率(最小单位)可达到微秒
datetime.tzinfo:时区相关信息对象的抽象基类。它们由datetime和time类使用,以提供自定义时间的而调整。
datetime.timezone:Python 3.2中新增的功能,实现tzinfo抽象基类的类,表示与UTC的固定偏移量
需要说明的是:这些类的对象都是不可变的。
2.datetime模块中定义的常量
datetime.MINYEAR:datetime.date或datetime.datetime对象所允许的年份的最小值,值为1
datetime.MAXYEAR:datetime.date或datetime.datetime对象所允许的年份的最大值,只为9999
3.对象方法和属性
d.year:年
d.month:月
d.day:日
d.replace(year[, month[, day]]):生成并返回一个新的日期对象,原日期对象不变
d.timetuple():返回日期对应的time.struct_time对象
d.toordinal():返回日期是是自 0001-01-01 开始的第多少天
d.weekday():返回日期是星期几,[0, 6],0表示星期一
d.isoweekday():返回日期是星期几,[1, 7], 1表示星期一
d.isocalendar():返回一个元组,格式为:(year, weekday, isoweekday)
d.isoformat():返回‘YYYY-MM-DD’格式的日期字符串
d.strftime(format):返回指定格式的日期字符串,与time模块的strftime(format, struct_time)功能相同
5. http请求
1、http请求方式:get和post
get一般用于获取/查询资源信息,在浏览器中直接输入url+请求参数点击enter之后连接成功服务器就能获取到的内容,post请求一般用于更新资源,通过form表单或者json、xml等其他形式提交给服务器端,然后等待服务器端给返回一个结果的方式(这个返回结果一般就是被修改之后的是否成功的状态,或者是修改后的最新数据table等)。
http请求,不论是get还是post请求,都会包含几个部分,分别是header,cookie,get会有param,post会有body。
这个可以通过fiddler里面抓包就可以拿到需要的Headers,一般需要设置的值可能有:
header = {
"Host": "x.x.360.cn",
"Authorization": "Basic: someValue",
"Content-Type": r"application/json",
"Connection": "keep-alive",
"Proxy-Connection": "keep-alive",
"Cookie": "xxxxxxxxx(备注:这里的具体值请自行填写,其他key对应的值也是一样)",
"User-Agent": "360xxxxxx(备注:这里的信息也请自行抓到之后填写,不需要的话,可以不用填写)"
}
2 python自带库--urllib2
简单使用如下:
-
import urllib2
-
response = urllib2.urlopen('http://localhost:8080/jenkins/api/json?pretty=true')
-
print response.read()
简单的get请求
-
import urllib2
-
import urllib
-
post_data = urllib.urlencode({})
-
response = urllib2.urlopen('http://localhost:8080/, post_data)
-
print response.read()
-
print response.getheaders()
3 第三方库--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
requests比urllib2更简单,且requests自带json解析。
参考来源
Python语言程序设计:https://www.icourse163.org/course/BIT-268001
Python基础学习5:类和对象等:https://blog.youkuaiyun.com/xiguayu_cui/article/details/90345127
Task 5:https://blog.youkuaiyun.com/W50FF/article/details/90347543
Python基础学习-Day5:https://blog.youkuaiyun.com/lilycoco1/article/details/90344851