Python第一期第四次作业

Python3 正则表达式

最简单的正则表达式为普通字符串,与它自己匹配。换而言之,正则表达式 'python' 与字符串 'python' 匹配

 通配符

正则表达式可与多个字符串匹配,你可使用特殊字符来创建这种正则表达式

句点与除换行符外的其他字符都匹配且只与一个字符匹配

'.ython' 与字符串 'python' 和 'jython' 都匹配

 对特殊字符进行转义

普通字符只与自己匹配,但特殊字符的情况完全不同。要让特殊字符的行为与普通字符一样,可对其进行转义:在它前面加上一个反斜杠

可使用模式 'python\\.org' ,它只与 'python.org' 匹配,也可使用原始字符串,如 r'python\.org' 。

指定排除字符集,可在开头添加一个 ^ 字符,例如 '[^abc]' 与除a、b和c外的其他任何字符都匹配

 字符集

匹配任何字符很有用,可以用方括号将一个子串括起,创建一个所谓的字符集。这样的字符集与其包含的字符都匹配,例如 '[pj]ython' 与 'python' 和'jython' 都匹配,但不与其他字符串匹配。你还可使用范围,例如 '[a-z]' 与a~z的任何字母都匹配。你还可组合多个访问,方法是依次列出它们,例如 '[a-zA-Z0-9]' 与大写字母、小写字母和数字都匹配。请注意,字符集只能匹配一个字符。

 脱字符( ^ )位于字符集开头时,除非要将其用作排除运算符,否则必须对其进行转义。换而言之,除非有意为之,否则不要将其放在字符集开头。 同样,对于右方括号( ] )和连字符( - ),要么将其放在字符集开头,要么使用反斜杠对其进行转义。实际上,如果你愿意,也可将连字符放在字符集末尾

 二选一和子模式:管道字符( | )

有时候你不想将二选一运算符用于整个模式,而只想将其用于模式的一部分。为此,可将这部分(子模式)放在圆括号内。对于前面的示例,可重写为 'p(ython|erl)'

 可选模式和重复模式

通过在子模式后面加上问号,可将其指定为可选的,即可包含可不包含

(pattern)* : pattern 可重复0、1或多次。

 (pattern)+ : pattern 可重复1或多次。

 (pattern){m,n} :模式可从父 m ~ n 次。

 字符串的开头和末尾

字符串的开头是否与模式 'ht+p' 匹配,为此可使用脱字符( '^' )来指出这一点。例如, '^ht+p' 与 'http://python.org' 和 'htttttp://python.org'匹配。要指定字符串末尾,可使用美元符号( $ )。


函数

函数 re.search 在给定字符串中查找第一个与指定正则表达式匹配的子串

函数 re.split 根据与模式匹配的子串来分割字符串。例如,使用字符串方法 split 时,可以字符串 ', ' 为分隔符来分割字符串,但使用 re. split 时,可以空格和逗号为分隔符来分割字符串。参数 maxsplit 指定最多分割多少次

re.escape 是一个工具函数,用于对字符串中所有可能被视为正则表达式运算符的字符进行转义

re.match函数

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

re.match(pattern, string, flags=0)

参数描述

pattern匹配的正则表达式

string要匹配的字符串。

flags标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

示例


sub函数
re.sub(pattern, repl, string, count=0, flags=0)

pattern : 正则中的模式字符串。repl : 替换的字符串,也可为一个函数。string : 要被查找替换的原始字符串。

count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。flags : 编译时用的匹配模式,数字形式。


compile 函数

参数:

pattern : 一个字符串形式的正则表达式

flags 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:

re.I 忽略大小写

re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境

re.M 多行模式

re.S 即为' . '并且包括换行符在内的任意字符(' . '不包括换行符)

re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库

re.X 为了增加可读性,忽略空格和' # '后面的注释



OS模块

#getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹)result = os.getcwd()print(result)

result = os.getcwd()

print(result)

#chdir()改变当前工作目录

datetime模块:https://www.jianshu.com/p/9408261049a6

naive datetime:是没有时区信息的时间类型

datetime.date:date部分只含有年 月 日信息

datetime.time:time部分只含有时 分 秒 微秒

datetime.datetime:datetime部分包含date和time两部分的信息,也就是包含年 月 日 时 分 秒 微秒

tday = datetime.date.today()本地时间

tdelta = datetime.timedelta(days=7)七天后时间

print('今天的日期:{}'.format(tday))

# 打印七天后的日期

print('从今天向前推7天:{}'.format(tday + tdelta))

日期相加减运算规律

datetime.date对象 = datetime.date对象 ± datetime.timedelta对象

datetime.timedelta对象 = datetime.date对象 ± datetime.date对象


datetime.datetime.today()返回本地datetime,不会返回时区

datetime.datetime.now()返回本地datetime,且可以返回时区,如果你在括号种不传入时区,today()和now()就是一样的

datetime.datetime.utcnow()返回UTC时间,北京时间就是UTC+8

aware datetime


字符串和datetime之间的转化

python中时间日期格式化符号:

%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 当前时区的名称

%% %号本身

作业


你可能感兴趣的:(Python第一期第四次作业)