Python 基础学习10

标准库学习:

日常应用比较广泛的模块是

1. 文字处理的 re

2. 日期类型的time、datetime

3. 数字和数学类型的math、random

4. 文件和目录访问的pathlib、os.path

5. 数据压缩和归档的tarfile

6. 通用操作系统的os、logging、argparse

7. 多线程的 threading、queue

8. Internet数据处理的 base64 、json、urllib

9. 结构化标记处理工具的 html、xml

10. 开发工具的unitest

11. 调试工具的 timeit

12. 软件包发布的venv

13. 运行服务的main

单字正则匹配符号: . ^ * + ? {m} {m,n} [] | 转译正则匹配符号:\d(相当于[0-9]+) \D (与\d作用相反,表示非数字) \s (表示a-z字符串) ()(实现分组功能) 组合正则匹配符号: ^(匹配空行) .*?(非贪婪匹配,用于多个相同字符只取首次) r'(\d+)-(\d+)-(\d+)'(r表示\无转译功能)

import re

p = re.compile(r'(\d+)-(\d+)-(\d+)')

print (p.match('2018-05-10').group())
#输出结果2018-05-10
print (p.match('2018-05-10').group(1))
#输出结果2018
print (p.match('2018-05-10').group(2))
#输出结果05
print (p.match('2018-05-10').groups() )
#输出结果('2018', '05', '10')
 year, month, day = p.match('2018-05-10').groups()
 print(year)
#输出结果2018

match是完整匹配
search是搜索匹配,下面例子match无法正确匹配,但search可以

import re

p = re.compile(r'(\d+)-(\d+)-(\d+)')

print (p.search('aa2018-05-10bb'))
#输出结果<_sre.SRE_Match object; span=(2, 12), match='2018-05-10'>,其中span是位置,match是匹配到结果

sub是字符替换功能

phone = '123-456-789 # 这是电话号码'
p2 = re.sub(r'#.*$','',phone)
print(p2)
#输出结果123-456-789,把后面注释替换为空

p3 = re.sub(r'\D','',p2)
print(p3)
#输出结果123456789,把中间-替换为空

findall是全空间字符串搜索匹配

import re
string = "x abc y 123 z 123"
pattern = re.compile(r'\d+')
print(re.search(pattern,string))
# 输出结果<re.Match object; span=(8, 11), match='123'>,找到1个123
print(pattern.findall(string))
#输出结果 ['123', '123'],找到多个123

链接前面正则学习笔记

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容