#日常应用广泛的模块是:
#1.文字处理re
#2.日期类型的time,datetime
#3.数字和数字类型的math、random
#4.文件和目录访问的pathlib、os.path
#5.数据压缩和归纳的tarfile
#6.通用操作系统的os、logging、queue
#7.多线程的threading、queue
#8.Internet数据处理的base64、json、urllib
#9.结构化标记处理工具html、xml
#10.并发工具unittest
#11.调试工具timeit
#12.软件包发布venv
#13.运行服务的__main__
1.正则表达式
元字符:
. 匹配任意的单个字符
^ 以什么字符开头(搜索和替换用的多)
$ 以什么字符结尾,从后面向前匹配
星号 * 匹配*前面的字符0次或多次p = re.compile('ca*t') print(p.match('ct')) #被匹配的字符串
也是可以匹配多次的
加号+ 匹配+前面字符出现1次
? 匹配?前面字符出现0次或1次
{m} 大括号表示前面字符要出现指定次数p = re.compile('ca{4}t') #匹配a出现4次 print(p.match('caaaat')) #被匹配的字符串
{m,n} 同上p = re.compile('ca{4,6}t') #匹配a出现4次到6次 print(p.match('caaaat')) #被匹配的字符串
[] []里面的任意的一个字符只要匹配成功,则都可以匹配成功
| 表示选择左边还是右边,或者
转义字符
\d [0-9]+匹配0-9这样的数字出现多次
\D 匹配不包含数字的
\s 匹配a-z的字符串
() 进行分组
^$ 表示这一行是空行,不包括
.*? 表示不适用贪婪模式——只匹配第一个匹配上的字符
print(r'\nx\n') #增加r进行标记,表示r后面的字符原样输出,不要转义
1.1 匹配日期
p = re.compile(r'(\d+)-(\d+)-(\d+)') #r后面的字符原样输出,(\d+)连续数字
print(p.match('2018-05-10')) #被匹配的字符串
输出结果:
<re.Match object; span=(0, 10), match='2018-05-10'>
1.2 提取某一部分