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'))

猜你喜欢

转载自www.cnblogs.com/yijue-lu/p/10255388.html