Python基础 5

类和对象

python类
  类, 是对一群具有相同特征 或者行为的事物的一个统称。是抽象的,不能直接使用。因此类的主要作用是表示某些特征和行为,在Python中特征被称为属性,行为被称为方法
理解类和对象的关系
  类好比制造飞机的图纸,对象好比飞机实例。需要注意的是类中有的属性和方法,在对象中也有,并且不能多也不能少
类的定义

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

类对象的实例化

object=类名(参数)

正则表达式

  正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。
  正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
  正则表达式是繁琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。

为什么使用正则表达式?
  典型的搜索和替换操作要求您提供与预期的搜索结果匹配的确切文本。虽然这种技术对于对静态文本执行简单搜索和替换任务可能已经足够了,但它缺乏灵活性,若采用这种方法搜索动态文本,即使不是不可能,至少也会变得很困难。
  通过使用正则表达式,可以:

  • 测试字符串内的模式。
    例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。
  • 替换文本。
    可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。
  • 基于模式匹配从字符串中提取子字符串。
    可以查找文档内或输入域内特定的文本。

  例如,您可能需要搜索整个网站,删除过时的材料,以及替换某些 HTML 格式标记。在这种情况下,可以使用正则表达式来确定在每个文件中是否出现该材料或该 HTML 格式标记。此过程将受影响的文件列表缩小到包含需要删除或更改的材料的那些文件。然后可以使用正则表达式来删除过时的材料。最后,可以使用正则表达式来搜索和替换标记。

re模块

正则表达式对象

re.RegexObject
re.compile() 返回 RegexObject 对象。
re.MatchObject
group() 返回被 RE 匹配的字符串。

  • start() 返回匹配开始的位置
  • end() 返回匹配结束的位置
  • span() 返回一个元组包含匹配 (开始,结束) 的位置

正则表达式修饰符 - 可选标志
  正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:

  • re.I 使匹配对大小写不敏感
  • re.L 做本地化识别(locale-aware)匹配
  • re.M 多行匹配,影响 ^ 和 $
  • re.S 使匹配包括换行在内的所有字符
    re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
    re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

正则表达式模式
模式字符串使用特殊的语法来表示一个正则表达式:
字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。
多数字母和数字前加一个反斜杠时会拥有不同的含义。
标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。
反斜杠本身需要使用反斜杠转义。
由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们。模式元素(如 r’\t’,等价于 \t )匹配相应的特殊字符。

  • ^ 匹配字符串的开头

  • $ 匹配字符串的末尾。

  • . 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。

  • […] 用来表示一组字符,单独列出:[amk] 匹配 ‘a’,‘m’或’k’

  • [^…] 不在[]中的字符:[^abc]匹配除了a,b,c之外的字符。

  • re* 匹配0个或多个的表达式。 re+ 匹配1个或多个的表达式。

  • re? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式

  • re{n} 匹配n个前面表达式。例如,"o{2}“不能匹配"Bob"中的"o”,但是能匹配"food"中的两个o。

  • re{n,} 精确匹配n个前面表达式。例如,"o{2,}“不能匹配"Bob"中的"o”,但能匹配"foooood"中的所有o。"o{1,}“等价 于"o+”。"o{0,}“则等价于"o*”。

  • re{ n, m} 匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式

  • a| b 匹配a或b

  • (re) 匹配括号内的表达式,也表示一个组 (?imx) 正则表达式包含三种可选标志:i, m, 或 x 。只影响括号中的区域。

  • (?-imx) 正则表达式关闭 i, m, 或 x 可选标志。只影响括号中的区域。

  • (?: re) 类似 (…), 但是不表示一个组

  • (?imx: re) 在括号中使用i, m, 或 x 可选标志

  • (?-imx: re) 在括号中不使用i, m, 或 x 可选标志

  • (?#…) 注释.

  • (?= re) 前向肯定界定符。如果所含正则表达式,以 …表示,在当前位置成功匹配时成功,否则失败。但一旦所含表达式已经尝试,匹配引擎根本没有提高;模式的剩余部分还要尝试界定符的右边。

  • (?! re) 前向否定界定符。与肯定界定符相反;当所含表达式不能在字符串当前位置匹配时成功。

  • (?> re) 匹配的独立模式,省去回溯。

  • \w 匹配数字字母下划线

  • \W 匹配非数字字母下划线

  • \s 匹配任意空白字符,等价于 [\t\n\r\f]。

  • \S 匹配任意非空字符

  • \d 匹配任意数字,等价于 [0-9]。

  • \D 匹配任意非数字

  • \A 匹配字符串开始

  • \Z 匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。

  • \z 匹配字符串结束

  • \G 匹配最后匹配完成的位置

  • \b 匹配一个单词边界,也就是指单词和空格间的位置。例如, ‘er\b’ 可以匹配"never" 中的 ‘er’,但不能匹配 “verb”
    中的 ‘er’。

  • \B 匹配非单词边界。‘er\B’ 能匹配 “verb” 中的 ‘er’,但不能匹配 “never” 中的 ‘er’。

  • \n, \t, 等。 匹配一个换行符。匹配一个制表符, 等

  • \1…\9 匹配第n个分组的内容。

  • \10 匹配第n个分组的内容,如果它经匹配。否则指的是八进制字符码的表达式。

datetime模块

datetime库概述
datetime库定义了2个常量和5个类。
2个常量分别是MINYEAR=1和MAXYEAR=9999。
5个类分别是:

date类:表示日期的类
time类:表示时间的类
datetime类:表示时间日期的类
timedelta类:表示两个datetime对象的差值;
tzinfo类:表示时区的相关信息

datetime的5个类详解
date类
date类包含三个参数,分别为year,month,day,返回格式为year-month-day。
构造函数

__new__(year,month,day):默认的构造函数,创建date类的对象时直接传入year,month,day三个参数即可返回对应的日期。

fromtimestamp(t):使用时间戳构造对象,使用方法为:datetime.date.fromtimestamp(t),传入参数t为一个时间戳,返回时间戳t对应的日期。

today():使用今天的日期构造对象,使用方法为:datetime.date.today(),无参数,返回今天的日期。

fromordinal(n):使用日期序数构造对象,使用方法为:datetime.date.fromordinal(n),传入参数为一个整数序数,代表从公元1年1月1日开始的序数,序数每增加1代表增加1天,返回最终计算出的日期。

方法

timetuple():返回日期对应的time.struct_time对象,格式为time.struct_time(tm_year=1, tm_mon=1, tm_mday=2, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=2, tm_isdst=-1)    。

toordinal():相当于fromordinal(n)的逆过程,返回值即为fromordinal(n)中的日期序数n。

weekday():返回该日期对应星期几,用[0,6]代表星期一到星期日。

isoweekday():作用同weekday(),用[1,7]代表星期一到星期日。

isocalendar():返回一个三元组,格式为(year,week_number,weekday),分别代表年,第几周,星期几。

isoformat():返回标准日期格式:YYYY-MM-DD。

ctime():返回格式为:Sat Sep  8 00:00:00 2018

strftime(format):把日期按照format指定的格式进行格式化,具体的格式化符号如下。

replace(year,month,day):传入参数为year,month,day,返回对应的新日期。

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

time类
time类包含六个参数,分别为hour,minute,second,microsecond,tzinfo,fold,返回格式为hour:minute:second(.microsecond)。
构造函数

__new__(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, fold=0):默认的构造函数,创建time类的对象时直接传入相应参数即可返回对应的时间。

方法

isoformat():返回标准时间格式:HH:MM:SS.mmmmmm+zz:zz。

strftime(format):把时间按照format指定的格式进行格式化,具体的格式化符号与date类中介绍的相同。

utcoffset():返回timezone的偏移量。

tzname():返回timezone的名称。

replace():传入对应的参数,返回新的时间。

datetime类
datetime类是date类和time类的合体,包含前两个类的全部参数。
构造函数

__new__(year, month, day, hour=0, minute=0, second=0,microsecond=0, tzinfo=None, fold=0):默认的构造函数,创建datetime类的对象时直接传入相应参数即可返回对应的时间日期。

fromtimestamp(t):使用时间戳构造对象,传入参数t为一个时间戳,返回时间戳t对应的日期和时间。

utcfromtimestamp(t):使用时间戳构造对象,传入参数t为一个时间戳,返回时间戳t对应的UTC(时间标准时间)日期和时间。

now():使用当前日期和时间构造对象,无参数,返回当前的日期和时间。

utcnow():使用当前日期和时间构造对象,无参数,返回当前的UTC(时间标准时间)日期和时间。

combine(date,time):使用date和time构造对象,传入参数为1个date对象和1个time对象,返回计算出的日期。

方法

timetuple():返回日期时间对应的time.struct_time对象,格式为time.struct_time(tm_year=1973, tm_mon=11, tm_mday=29, tm_hour=21, tm_min=33, tm_sec=9, tm_wday=3, tm_yday=333, tm_isdst=-1)    。

utctimetuple():与timetuple()相似,返回日期时间对应的UTC(时间标准时间)time.struct_time对象。

astimezone():返回的格式中加入时区信息,格式为:1973-11-29 21:33:09+08:00。

date():返回date部分

time():返回time部分,tzinfo设置为None。(另有timetz()方法返回有相同tzinfo的time())

isoformat(sep):返回标准日期时间格式,传入参数sep可设置日期和时间的分隔符,默认为'T':1973-11-29T21:33:09。

ctime():返回格式为:Sat Sep  8 00:00:00 2018

strftime(format):把日期按照format指定的格式进行格式化,具体的格式化符号与date类中介绍的相同。

strptime(date_string,format):将字符串格式转换为日期格式,具体的格式化符号与date类中介绍的相同。

replace():传入对应的参数,返回新的日期时间。

timedelta类
timedelta类代表两个datetime对象之间的时间差。
构造函数

__new__(days=0, seconds=0, microseconds=0,milliseconds=0, minutes=0, hours=0, weeks=0):默认的构造函数,创建timedelta类的对象时直接传入相应参数即可返回对应单位的时间差。

方法

支持两个timedelta对象之间的加、减操作。
支持对一个timedelta进行取正、取负、取绝对值等操作。
支持两个timedelta对象之间的比较。
支持一个timedelta对象乘以、除以一个整数的操作

tzinfo类
tzinfo类是一个虚拟基类,代表时区(time zone),创建子类时必须重写name(),utcoffset(),dst()这三个方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值