Doc: https://docs.python.org/3.10/library/index.html
日常应用比较广泛的模块是:
1. 文字处理的 re
https://docs.python.org/3.10/library/re.html
re: regular expression 正则表达式
匹配
# 元字符 # . 匹配任意单个字符 # ^ 匹配开头 # $ 匹配结尾 # ^$ 匹配空行 # * 匹配前面的字符出现0次到多次 # + 匹配前面的字符出现1次到多次 # ? 匹配前面的字符出现0次到1次 # .*? 不使用贪婪模式 # {m} 匹配前面的字符出现m次 # {m,n} 匹配前面的字符出现m~n次 # [abc] 匹配[]里面的任意一个字符 # | 或 # () 分组 # \d 匹配任意一个数字字符 # \D 匹配任意一个非数字字符 # \s 匹配任意一个空白字符 import re # p = re.compile('.{3}') #匹配任意三个字符 # p = re.compile('jpg$') # 匹配以jpg结尾的字符串 p = re.compile('ca*t') print(p.match('ct')) print(p.match('caaat')) print('') p = re.compile(r'(\d+)-(\d+)-(\d+)') # r 表示将后面的字符串进行原样输出 print (p.match('2018-05-10')) print (p.match('2018-05-10').group()) print (p.match('2018-05-10').group(2)) print (p.match('2018-05-10').groups()) year, month, day = p.match('2018-05-10').groups() print(year) 运行结果: <re.Match object; span=(0, 2), match='ct'> <re.Match object; span=(0, 5), match='caaat'> <re.Match object; span=(0, 10), match='2018-05-10'> 2018-05-10 05 ('2018', '05', '10') 2018
查找和替换
import re # 查找 p1 = re.compile(r'(\d+)-(\d+)-(\d+)') print(p1.search('aa2018-05-10bb')) #替换 phone = '123-456-789 # 这是电话号码' p2 = re.sub(r'#.*$','',phone) print(p2) p3 = re.sub(r'\D','',p2) print(p3) # 查找所有匹配的字符 print(re.findall('3', '135363')) 运行结果: <re.Match object; span=(2, 12), match='2018-05-10'> 123-456-789 123456789 ['3', '3', '3']
2. 日期类型的 time, datetime
https://docs.python.org/3.10/library/time.html
import time # 导入一个时间模块 print(time.time()) # 打印出从1970年1月1日0:00 到现在经过了多少秒 print(time.localtime()) print(time.strftime('%Y%m%d')) 运行结果: 1636253522.1462984 time.struct_time(tm_year=2021, tm_mon=11, tm_mday=7, tm_hour=2, tm_min=52, tm_sec=2, tm_wday=6, tm_yday=311, tm_isdst=0) 20211107
https://docs.python.org/3.10/library/datetime.html
import datetime print(datetime.datetime.now()) newtime = datetime.timedelta(minutes=10) print(datetime.datetime.now()+ newtime) one_day=datetime.datetime(2008,5,27) new_date=datetime.timedelta(days=10) print( one_day + new_date) 运行结果: 2021-11-07 02:53:55.506087 2021-11-07 03:03:55.506117 2008-06-06 00:00:00
3. 数字和数学类型的math, random
https://docs.python.org/3.10/library/math.html
https://docs.python.org/3.10/library/random.html
import random print(random.randint(1,5)) print(random.choice(['aa','bb','cc'])) 运行结果: 4 cc
4. 文件和目录访问的pathlib, os.path
https://docs.python.org/3.10/library/pathlib.html
from pathlib import Path p = Path('.') print (p.resolve()) print(p.is_dir()) # 创建 /tmp/a/b/c q = Path('/tmp/a/b/c') Path.mkdir(q, parents=True) 运行结果: /users/data True
https://docs.python.org/3.10/library/os.path.html
import os print(os.path.abspath('.')) print(os.path.abspath('..')) print(os.path.exists('/users')) print(os.path.isfile('/users')) print(os.path.isdir('/users')) print(os.path.join('/tmp/a/','b/c')) 运行结果: /users/data /users True False True /tmp/a/b/c
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__
浙公网安备 33010602011771号