Python基础——Task5

任务:

1.类和对象
2.正则表达式
3.re模块
4.datetime模块学习
5.http请求

一、类和对象

类(Class) 官方给出的解释是 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
class Student(object): pass
class 后面紧接着是类名,即 Student,类名通常是大写开头的单词,紧
接着是(object),表示该类是从哪个类继承下来的,继承的概念我们后
面再讲,通常,如果没有合适的继承类,就使用 object 类,这是所有类
最终都会继承的类。

class 类名: 
def 方法1(self ,参数列表)
  pass
def 方法2(self ,参数列表)
  pass

二、正则表达式

参考:https://www.cnblogs.com/chuxiuhong/p/5885073.html

正则表达式表示什么:
正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
引用自维基百科https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F
注意:
无论是python还是正则表达式都是区分大小写的。
Python基础——Task5_第1张图片

三、re模块

参考:
https://blog.csdn.net/michellechouu/article/details/26837787
1、Python中转义字符
正则表达式使用反斜杠" \ “来代表特殊形式或用作转义字符,这里跟Python的语法冲突,因此,Python用”\\ “表示正则表达式中的” \ “,因为正则表达式中如果要匹配” \ “,需要用\来转义,变成” \ “,而Python语法中又需要对字符串中每一个\进行转义,所以就变成了” \\ “。
为了使正则表达式具有更好的可读性,Python特别设计了原始字符串(raw string),需要提醒你的是,在写文件路径的时候就不要使用raw string了,这里存在陷阱。raw string就是用’r’作为字符串的前缀,如 r”\n":表示两个字符"“和"n”,而不是换行符了。Python中写正则表达式时推荐使用这种形式。
2、
Python基础——Task5_第2张图片

四、datetime模块学习

参考:https://www.cnblogs.com/tkqasn/p/6001134.html

datatime模块重新封装了time模块,提供更多接口,提供的类有:date,time,datetime,timedelta,tzinfo。
1、date
datetime.date(year, month, day)
静态方法和字段

date.max、date.min:date对象所能表示的最大、最小日期;
date.resolution:date对象表示日期的最小单位。这里是天。
date.today():返回一个表示当前本地日期的date对象;
date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;

方法和属性

d1 = date(2011,06,03)#date对象
d1.year、date.month、date.day:年、月、日;
d1.replace(year, month, day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)
d1.timetuple():返回日期对应的time.struct_time对象;
d1.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;
d1.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;
d1.isocalendar():返回格式如(year,month,day)的元组;
d1.isoformat():返回格式如'YYYY-MM-DD’的字符串;
d1.strftime(fmt):和time模块format相同。

2、time
datetime.time(hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] )

静态方法和字段

在这里插time.min、time.max:time类所能表示的最小、最大时间。其中,time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999);
time.resolution:时间的最小单位,这里是1微秒;入代码片

方法和属性

在这里插入代码片t1 = datetime.time(10,23,15)#time对象
t1.hour、t1.minute、t1.second、t1.microsecond:时、分、秒、微秒;
t1.tzinfo:时区信息;
t1.replace([ hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ):创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变);
t1.isoformat():返回型如"HH:MM:SS"格式的字符串表示;
t1.strftime(fmt):同time模块中的format;

3、datetime
datetime相当于date和time结合起来。
datetime.datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )
静态方法和字段

在这里插入代码片datetime.today():返回一个表示当前本地时间的datetime对象;
datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
datetime.utcnow():返回一个当前utc时间的datetime对象;#格林威治时间
datetime.fromtimestamp(timestamp[, tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;
datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;
datetime.combine(date, time):根据date和time,创建一个datetime对象;
datetime.strptime(date_string, format):将格式字符串转换为datetime对象;

方法和属性

在这里插入代码片dt=datetime.now()#datetime对象
dt.year、month、day、hour、minute、second、microsecond、tzinfo:
dt.date():获取date对象;
dt.time():获取time对象;
dt. replace ([ year[ , month[ , day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ] ] ]):
dt. timetuple ()
dt. utctimetuple ()
dt. toordinal ()
dt. weekday ()
dt. isocalendar ()
dt. isoformat ([ sep] )
dt. ctime ():返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple()));
dt. strftime (format)

4.timedelta类,时间加减

使用timedelta可以很方便的在日期上做天days,小时hour,分钟,秒,毫秒,微妙的时间计算,如果要计算月份则需要另外的办法。

在这里插#coding:utf-8
from  datetime import *

dt = datetime.now()
#日期减一天
dt1 = dt + timedelta(days=-1)#昨天
dt2 = dt - timedelta(days=1)#昨天
dt3 = dt + timedelta(days=1)#明天
delta_obj = dt3-dt
print type(delta_obj),delta_obj# 1 day, 0:00:00
print delta_obj.days ,delta_obj.total_seconds()#1 86400.0入代码片

5、tzinfo时区类

#! /usr/bin/python
# coding=utf-8

from datetime import datetime, tzinfo,timedelta

"""
tzinfo是关于时区信息的类
tzinfo是一个抽象类,所以不能直接被实例化
"""
class UTC(tzinfo):
    """UTC"""
    def __init__(self,offset = 0):
        self._offset = offset

    def utcoffset(self, dt):
        return timedelta(hours=self._offset)

    def tzname(self, dt):
        return "UTC +%s" % self._offset

    def dst(self, dt):
        return timedelta(hours=self._offset)

#北京时间
beijing = datetime(2011,11,11,0,0,0,tzinfo = UTC(8))
print "beijing time:",beijing
#曼谷时间
bangkok = datetime(2011,11,11,0,0,0,tzinfo = UTC(7))
print "bangkok time",bangkok
#北京时间转成曼谷时间
print "beijing-time to bangkok-time:",beijing.astimezone(UTC(7))

#计算时间差时也会考虑时区的问题
timespan = beijing - bangkok
print "时差:",timespan

#Output==================
# beijing time: 2011-11-11 00:00:00+08:00
# bangkok time 2011-11-11 00:00:00+07:00
# beijing-time to bangkok-time: 2011-11-10 23:00:00+07:00
# 时差: -1 day, 23:00:00

五、http请求

参考:
https://cloud.tencent.com/developer/news/381547
python 中实现 HTTP 请求有三种方式,分别为 urllib2/urllib、httplib/urllib 和 Requests。
urllib2/urllib
1.基本请求和响应模型
urllib2 和 urllib 是 Python 中的两个内置模块,实现 HTTP 请求时,以 urllib2 为主,urllib 为辅。urllib2 模块提供了 urliopen() 方法,可以向指定的 URL 发出请求来获取数据。
2.请求头 headers 处理
请求头信息可以直接与 URL 一起放到 Requset() 方法里,也可以使用 add_header() 方法添加请求头信息。
3.Cookie 处理
urllib2 对 Cookie 的处理是自动的,使用 CookieJar 函数进行 Cookie 的管理。我们也可以通过设置请求头中的 Cookie 域来自定义添加 Cookie 的内容。
4.设置超时处理的三种方法
在 python2.6 之前的版本,urllib2 的 API 并没有 Timeout 的设置,要设置 Timeout 值,只能通过设置 Socket 的全局 Timeout 值实现。而在 python2.6 及新的版本中,urlopen() 函数提供了对 Timeout 的设置。
5.获取 HTTP 响应码
对于 200 OK 来说,urlopen() 方法返回的 response 对象的 getcode() 方法可以得到该 HTTP 响应码,但是对于其他类型的响应码,urlopen() 方法会抛出异常,这样需要通过异常对象来获取响应码。
6.重定向
urllib2 默认情况下会针对 HTTP 3XX 返回码自动进行重定向动作。要检测是否发生了重定向动作,只要检查一些 Response 的 URL 和 Resquest 的 URL 是否一致就可以了。
7.Proxy 代理
urllib2 默认使用环境变量 http_proxy 来设置 HTTP Proxy;也可以使用 ProxyHandler 在程序中动态设置代理。
使用 urllib2.install_opener() 方法会全局设置代理,不利于更细粒度的控制,可以使用 opener.open() 代替全局的 urlopen() 方法使用不同的代理。
httplib/urllib
httplib 模块是一个底层基础模块,可以了解建立 HTTP 请求的每一步,正常情况下开发用的很少。

你可能感兴趣的:(python)