标准库学习:
日常应用比较广泛的模块是:
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
单字正则匹配符号: . ^ (匹配空行) .*?(非贪婪匹配,用于多个相同字符只取首次) 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