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__

 

posted on 2021-11-07 16:36  jingmojing  阅读(55)  评论(0)    收藏  举报