day17_python_1124

01 昨日内容回顾
包:
1,在内存中创建一个以包命名的空间。
2,执行包的__init__文件将文件中的名字加载到包的名称空间。
3,通过包名.名字(变量,函数,类名)方式调用这些内容。

aaa.x
aaa.y
调用m2怎么做?
从__init__文件:from aaa import m2

调用bbb包?
从aaa 的__init__文件:from aaa import bbb

找到bbb包里面的x
bbb __init__文件: x = 666
import aaa
aaa.bbb.x
找到m3?
1,在执行文件:import aaa
2,在aaa的__init__文件:from aaa import bbb
3, 在bbb的__init__文件: from aaa.bbb import m3
aaa.bbb.m3.f1()

# 相对导入,绝对导入
.当前目录 .. 上一级目录

from a.b.c.d import e
点的左边都是包
在包的__init__ 里面导入模块 from ... import ...
from a.b.c.d import e.f.t 错误

random:随机模块
randomint(1,10)
random.choice()

shutil:
复制文件,文件夹
打包压缩 解压
02 re模块
对一个大篇幅的字符串,按照你的规则找出想要的字符串。
'fjdsilafjdsfljk太白金星' 通过re的方法找出fjds

找出一本名著:水浒传 西游记 红楼梦 三国演义
找一本名著:三个字,官二代勾引大嫂,英雄为兄报仇,的狗血剧情:金-瓶梅。

03 xml

# 02 re模块

import re# s1 = '老男孩 柳州 柳州 柳州'# print(s1.find('柳州')) #返回第一个柳的索引

# print(re.findall('柳州',s1))  #['柳州', '柳州', '柳州']# print(type((re.findall('柳州',s1))))  #list

#  元字符

# \w匹配字母(包含中文)或数字或下划线# \W匹配非字母(包含中文)或数字或下划线

# print(re.findall('\w','太白 liuzhou 123 --*'))# print(re.findall('\W','太白 liuzhou 123 --*'))

# \s  匹配任意的空白符# \S  匹配任意非空白符

# print(re.findall('\s',' 广西 liuzhou __ -- * \n\t'))# print(re.findall('\S',' 广西 \S liuzhou __ -- * \n\t'))  #同下,遇\打印\\# print(re.findall('\\S',' 广西 \S liuzhou __ -- * \n\t'))  #['广', '西', '\\', 'S', 'l', 'i', 'u', 'z', 'h', 'o', 'u', '_', '_', '-', '-', '*']# print(re.findall('\\\S',' 广西 \S liuzhou __ -- * \n\t'))  #['\\S']  加\\

# \d 匹配数字# \D 匹配非数字# print(re.findall('\d','柳州 \d 123-*'))# print(re.findall('\\d','柳州 \d 123-*'))  #无效果# print(re.findall('\\\d','柳州 \d 123-*'))  #需要加\\

# print(re.findall('\D','柳州 \D 123-*'))   #遇\打印\\# print(re.findall('\\D','柳州 \D 123-*'))   #无效果# print(re.findall('\\\D','柳州 \D 123-*'))   #['\\D']  加\\

# \A 或 ^ 匹配字符串的开始# print(re.findall('\A老','老男孩 太白'))# print(re.findall('\A老','男孩 老 太白'))  #[]# print(re.findall('^老','老男孩 老 太白'))  #['老']

# \Z $ 匹配字符串结束# print(re.findall('广西\Z',' 柳州 ds 广西'))  #\Z放后面# print(re.findall('地方$',' 柳州 ds 广西 地方'))  #[]# print(re.findall('\$$',' 柳州 ds 广西 地方 $'))  #转译\$

# 重复匹配# . ? * + {m,n} .* .*?

# .匹配任意字符

# print(re.findall('a.b','babb'))# print(re.findall('a.b','babb asdb'))  #['abb']  . 取一个字符# print(re.findall('a.b','abb a%b a1b aab a7b a+b a b a\nb'))# print(re.findall('a.b','abb a%b a1b aab a7b a+b a b a\nb',re.DOTALL))  #?# print(re.findall('a.bb','abb abb aaab'))

# ? 匹配0个或者1个由左边字符定义的片段# print(re.findall('a?b','abbzab abb ab aab'))  #['ab', 'b', 'ab', 'ab', 'b', 'ab', 'ab']

# * 匹配0个或者多个左边字符表达式# print(re.findall('a*b','b ab aaaaaab abbbbbbb'))#['b', 'ab', 'aaaaaab', 'ab', 'b', 'b', 'b', 'b', 'b', 'b']

# + 匹配1个或者多个左边字符表达式# print(re.findall('a+b','b ab aaaaaab abb'))  # ['ab', 'aaaaaab', 'ab']

# {m,n}  匹配m个至n个左边字符表达式# print(re.findall('a{1,3}b','aaab ab aab abbb aaz aabb aaaaab'))

# .* 贪婪匹配 从头到尾.# print(re.findall('a.*b','aab ab aaaaab a!!!@#$bz'))

# # .*?  非贪婪匹配 从头到尾.# print(re.findall('a.*?b','aab ab aaaaab a!!!@#$bz'))

# [] 取一个# print(re.findall('a[abc]b','aab abb acb afb'))# print(re.findall('a[0-9]b','a1b a2b a3b  acb ayb'))# print(re.findall('a[a-z]b','a1b a2b a3b  acb ayb adb'))# print(re.findall('a[A-Z]b','a1b a2b a3b  aAb aDb aYb'))# print(re.findall('a[a-zA-Z]b','aab aAb aWb aqb a1b'))  # 大小写字母# print(re.findall('a[A-z]b','aab aAb aWb aqb a1b'))  #中间会多一些特殊字符# print(re.findall('a[0-9][0-9]b','a1b a2b a29b a56b a456b'))# print(re.findall('a[-+*/]b','a+b a-b a*b a/b a6b')) 单纯的想表示- 一定要放在最前面

# ()  制定一个规则,将满足规则的结果匹配出来# 将满足规则的() 里面的内容匹配出来# print(re.findall('.*?_sb','wusir_sb alex_sb 日天_sb'))# print(re.findall('(.*?)_sb','wusir_sb alex_sb 日天_sb'))# print(re.findall('company|companies','Too many companies have gone bankrupt, and the next one is my company'))#  | 或# print(re.findall('compan(?:y|ies)','Too many companies have gone bankrupt, and the next one is my company'))# ?: 全部匹配出来

# \ 匹配# print(re.findall('武sir|太白|alex','武sir 太白 金星 李杰 alex'))# print(re.findall('\.(\w*)', 'dsajk.1234.dasf'))  #\.加\转译

# search 找到第一个则返回,返回一个对象,没有找到则返回None

# 对象.group() 可以将找到的第一个值取出来# print(re.search('alex','re alex alex 太白'))  #<_sre.SRE_Match object; span=(3, 7), match='alex'># print(re.search('alex','re aaaelx 太白'))# ret = re.search('alex','re alex alex 太白')# print(ret.group())

# print(re.match('barry','barry fdlfjsadfkl ').group())# print(re.match('barry','qbarry fdlfjsadfkl '))

# s1 = 'wusir;太白;alex; 日天'# s1 = 'wusir;太白,alex|日天!小虎'# print(s1.split(';'))# print(s1.replace(';',';').split(';'))# print(re.split('[;,|!]',s1))

# print(re.sub('barry', '太白金星', 'barry是最好的讲师,barry就是一个普通老师,请不要将barry当男神对待。',2))

 # ^ 在中括号[]中是取反# print(re.search('([a-zA-Z]+)([^a-zA-Z]+)([a-zA-Z]+)([^a-zA-Z]+)([a-zA-Z]+)', r'alex is sb').group())# print(re.sub('([a-zA-Z]+)([^a-zA-Z]+)([a-zA-Z]+)([^a-zA-Z]+)([a-zA-Z]+)', r'\5\2\3\4\1',r'alex is sb'))  #调序 了解

# obj = re.compile('\d{2}')  # 制定一个统一的匹配规则# print(obj.findall('fdsafsda1243fdsdf324'))# print(obj.findall('123fksldjf3432fdsjlkf453'))

# ret = re.finditer('\d', 'ds3sy4784a')# print(ret)# # ret = iter([3 4 7 8 4])# print(next(ret).group())# print(next(ret).group())# print([i.group() for i in ret])

# s1 = '深圳电话:0755-546123546 深圳地址:广东..'# print(re.search('\d+-\d+',s1).group())# 命名分组# 分组基础上定规则 ?P<组名># ret = re.search('(?P<quhao>\d+)-(?P<num>\d+)',s1)# print(ret.group('quhao'))# print(ret.group('num'))

# s1 = '深圳电话:0755-546123546 深圳地址:广东..'# print(re.findall('[1-9]*-[1-9]*',s1))

# s2 = "ip='192.168.6.11',verion:1.0.0"# print(re.search("ip='\d+\.\d+\.\d+\.\d+'",s2).group())# print(re.search("ip='(?P<ip>\d+\.\d+\.\d+\.\d+)'",s2).group('ip'))

# ret = re.search('(?P<ip>[\d+/.]+)',s2)# print(ret.group('ip'))

#qq号# print(re.findall('[1-9]\d{5,12}','dfdsfd 12343435 fds0 5435454 56567567 dsjfhdsf'))
上一篇:Msys+Mingw在手 妙用在心!


下一篇:UI和View 三种控制方式