day10(模块:collections,times,random,os,sys)

1.复习

正则表达式
字符组 [字符]
元字符
    \w \d \s
    \W \D \S
    . 除了换行符以外的任意字符
    \n \t
    \b
    ^ $ 匹配字符串的开始和结束
    () 分组  是对多个字符组整体量词约束的时候用的
                re模块:分组是有优先的
                    findall
                    split
    | 从左到右匹配,只要匹配上就不继续匹配了。所以应该把长的放前面
    [^] 除了字符组内的其他都匹配
量词
    *   0~
    +   1~
    ?  0~1
    {n} n
    {n,} n~
    {n,m} n~m

转义的问题
import re
re.findall(r'\\s',r'\s')

惰性匹配
量词后面加问号
    .*?abc 一直取遇到abc就停

re模块
import re
re.findall('\d','awir17948jsdc',re.S)
返回值:列表 列表中是所有匹配到的项

ret = search('\d(\w)+','awir17948jsdc')
ret = search('\d(?P<name>\w)+','awir17948jsdc')
找整个字符串,遇到匹配上的就返回,遇不到就None
如果有返回值ret.group()就可以取到值
取分组中的内容 : ret.group(1)   /  ret.group('name')

match
从头开始匹配,匹配上了就返回,匹配不上就是None
如果匹配上了 .group取值

分割 split
替换 sub 和 subn
finditer 返回迭代器
compile 编译 :正则表达式很长且要多次使用

import re
ret = re.search("<(?P<tag_name>\w+)>\w+</(?P=tag_name)>","<h1>hello</h1>")
还可以在分组中利用?<name>的形式给分组起名字
获取的匹配结果可以直接用group('名字')拿到对应的值
print(ret.group('tag_name'))   #结果 :h1
print(ret.group())             #结果 :<h1>hello</h1>

ret = re.search(r"<(\w+)>\w+</\1>","<h1>hello</h1>")
如果不给组起名字,也可以用\序号来找到对应的组,表示要找的内容和前面的组内容一致
获取的匹配结果可以直接用group(序号)拿到对应的值
print(ret.group(1))
print(ret.group())  结果 :<h1>hello</h1>

import re
ret=re.findall(r"\d+\.\d+|(\d+)","1-2*(60+(-40.35/5)-(-4*3))")
print(ret) #['1', '2', '60', '40', '35', '5', '4', '3']
ret.remove('')
print(ret)
ret=re.findall(r"-?\d+\.\d*|(-?\d+)","1-2*(60+(-40.35/5)-(-4*3))")
print(ret) #['1', '-2', '60', '', '5', '-4', '3']
ret.remove("")
print(ret) #['1', '-2', '60', '5', '-4', '3']

首先得到一个字符串
去空格
没有空格的字符串
先算最里层括号里的 : 找括号 ,且括号里没有其他括号
得到了一个没有括号的表达式 :只有加减乘除 从左到右先找到第一个乘除法   —— 重复
所有的乘除法都做完了
计算加减  —— 加减法
只有一个数了 就可以结束了

http://www.cnblogs.com/Eva-J/articles/7228075.html#_label7

2.collection模块

列表、元祖
字典
集合、frozenset
字符串
堆栈 : 先进后出
队列 :先进先出 FIFO

from collections import namedtuple
Point = namedtuple('point',['x','y','z'])
p1 = Point(1,2,3)
p2 = Point(3,2,1)
print(p1.x)
print(p1.y)
print(p1,p2)

花色和数字
Card = namedtuple('card',['suits','number'])
c1 = Card('红桃',2)
print(c1)
print(c1.number)
print(c1.suits)

队列
import queue
q = queue.Queue()
q.put([1,2,3])
q.put(5)
q.put(6)
print(q)
print(q.get())
print(q.get())
print(q.get())
print(q.get())   # 阻塞
print(q.qsize())

from collections import deque
dq = deque([1,2])
dq.append('a')   # 从后面放数据  [1,2,'a']
dq.appendleft('b') # 从前面放数据 ['b',1,2,'a']
dq.insert(2,3)    #['b',1,3,2,'a']
print(dq.pop())      # 从后面取数据
print(dq.pop())      # 从后面取数据
print(dq.popleft())  # 从前面取数据
print(dq)

有序字典
from collections import  OrderedDict
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(od) # OrderedDict的Key是有序的
print(od['a'])
for k in od:
    print(k)

from collections import defaultdict
d = defaultdict(lambda : 5)
print(d['k'])

3.time模块

import time
time.sleep(100)
print(time.time())

格式化时间  —— 字符串: 给人看的
时间戳时间 —— float时间 : 计算机看的
结构化时间 —— 元组 :计算用的

print(time.strftime("%Y-%m-%d %a %H:%M:%S"))  #year month day HOUR MINUTE SECOND
print(time.strftime("%Y/%m/%d %H:%M:%S"))  #year month day HOUR MINUTE SECOND
print(time.strftime("%m-%d %H:%M:%S"))  #year month day HOUR MINUTE SECOND
print(time.strftime("%H:%M:%S"))  #year month day HOUR MINUTE SECOND
print(time.strftime("%H:%M"))  #year month day HOUR MINUTE SECOND

struct_time = time.localtime()
print(struct_time)
print(struct_time.tm_year)

import time
时间戳和结构化时间
t = time.time()
print(t)
print(time.localtime(3000000000))
print(time.gmtime(t))

print(time.mktime(time.localtime()))

print(time.strptime('2000-12.31','%Y-%m.%d'))
print(time.strftime('%m/%d/%Y %H:%M:%S',time.localtime(3000000000)))

print(time.asctime())

4.random模块

1234   432145
Abc123 a17698

0-9
chr
[65-90] 数字
字母 = chr(数字)
随机数字
随机选一个 [随机数字,随机字母]

5.os模块

import  os
print(os.getcwd())   获取当前工作目录,即当前python脚本工作的目录路径
os.chdir(r'C:\Users\Administrator\PycharmProjects')
print(os.getcwd())

os.chdir('..')    改变当前脚本工作目录;相当于shell下cd
print(os.getcwd())
os.makedirs('dirname1/dirname2')    可生成多层递归目录
os.removedirs('dirname1/dirname2')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推

os.mkdir('dirname1/dirname')    生成单级目录;相当于shell中mkdir dirname

print(os.listdir(r'C:/Users/Administrator/PycharmProjects/s9'))
列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
print(os.stat('1.复习.py'))    获取文件/目录信息

print(os.sep)  # python代码跨平台 :linux windows
/user/bin/

os.system("dir")
ret = os.popen("dir").read()    运行shell命令,获取执行结果
print(ret)

print(os.environ)

print(os.getcwd())
print(os.path.split(os.getcwd()))

print(os.path.join(r'C:\Users\Administrator','user','local'))
print(os.getcwd())
print(os.path.getsize(os.path.join(os.getcwd(),'1.复习.py')))

6.sys模块

import sys
print(sys.platform)
print(sys.version)

print(sys.path.clear())

ret = sys.argv
name = ret[1]
pwd = ret[2]
if name == 'alex' and pwd == 'alex3714':
    print('登陆成功')
else:
    print("错误的用户名和密码")
    sys.exit()
print('你可以使用计算器了')

有多少个模块 —— 每个模块大概解决得问题
把模块中的所有方法敲一遍 —— 写到博客上

代码作业
计算时间差
验证码
计算器
默写:
     验证码

猜你喜欢

转载自blog.csdn.net/qq_36227329/article/details/81208368