day21:正则函数&模块和包(import)
正则函数
1.search 通过正则匹配出第一个对象返回,通过group取出对象中的值
# search 通过正则匹配出第一个对象返回,通过group取出对象中的值
strvar = "1+2 3*4"
obj = re.search("\d+(.*?)\d+",strvar)
print(obj)
# 返回匹配到的内容(匹配到一个就返回)
res = obj.group()
print(res) # <_sre.SRE_Match object; span=(0, 3), match='1+2'>
# 返回分组里面的内容,类型是元组
tup = obj.groups()
print(tup[0]) # 1+2
2.match 验证用户输入内容
# match 验证用户输入内容(了解)
"""当search函数里面的正则表达式前面加上^ 等价于 matth的用法"""
strvar = "a13566668888"
obj = re.search("^\d+",strvar)
print(obj)
# print(obj.group())
obj = re.match("\d+",strvar)
print(obj)
# print(obj.group())
3.split 切割
# split 切割
strvar = "alex|xboyww&wusir%ritian"
res = re.split("[|&%]",strvar)
print(res) # ['alex', 'xboyww', 'wusir', 'ritian'] strvar = "alex234234xboyww6786wusir78967896ritian"
res = re.split("\d+",strvar) # ['alex', 'xboyww', 'wusir', 'ritian']
print(res)
4.sub 替换
# sub 替换
"""sub(正则,要替换的字符,原字符串[,次数])"""
strvar = "alex|xboyww&wusir%ritian"
res = re.sub("[|&%]","-",strvar)
print(res) # alex-xboyww-wusir-ritian
strvar = "alex|xboyww&wusir%ritian"
res = re.sub("[|&%]","-",strvar,2)
print(res) # alex-xboyww-wusir-ritian
5.subn 替换
# subn 替换 (用法和sub一样,区别在于返回的是元组 (结果,次数) )
strvar = "alex|xboyww&wusir%ritian"
res = re.subn("[|&%]","-",strvar)
res = re.subn("[|&%]","-",strvar,1)
print(res)
6.finditer 返回字符串中响应内容 返回迭代器
# finditer 匹配字符串中相应内容,返回迭代器[迭代器中包含的是对象]
from collections import Iterator , Iterable
strvar = "jkasdfjkadfjk1234asfj2342kfa"
it = re.finditer("\d+",strvar)
print(isinstance(it,Iterator)) # 获取迭代器里面的内容
for i in it:
print(i.group())
7.compile 指定一个统一的匹配规则
# compile 指定一个统一的匹配规则
"""
正常情况下,正则表达式编译一次,执行一次.
如果想要编译一次,多次使用的话,使用compile compile 可以编译一次,终身受益.节省系统的资源
"""
strvar = "jksdjdfsj72343789asdfaj234"
pattern = re.compile("\d+")
print(pattern)
lst = pattern.findall(strvar)
print(lst)
obj = pattern.search(strvar)
print(obj.group())
8.正则表达式修饰符
# ### 正则表达式修饰符
# re.I 使匹配对大小写不敏感
strvar = "<h1>72347923489</H1>"
pattern = re.compile(r"<h1>(.*?)</h1>",flags=re.I)
obj = pattern.search(strvar)
print(obj)
print(obj.group()) # re.M 使每一行都能够单独匹配(多行),影响 ^ 和 $
strvar = """<h1>72347923489</H1>
<p>72347923489</p>
<li>72347923489</li>
"""
pattern = re.compile("^<.*?>(?:.*?)<.*?>$",flags=re.M)
lst = pattern.findall(strvar)
print(lst) # re.S 使 . 匹配包括换行在内的所有字符
strar = """give
1234234234mefive
"""
pattern = re.compile("(.*?)mefive",flags=re.S)
obj = pattern.search(strar)
print(obj)
print(obj.group()) # 可以加多个修饰符 通过| 拼接
"""
pattern = re.compile("(.*?)mefive",flags=re.S|re.I|re.M)
"""
模块和包
模块部分
1.import导入
# 导入一次,终身受益,不会重复导入
"""
import mymodule
import mymodule
import mymodule """"""
# 模块.变量
print(mymodule.dog)
# 模块.函数
mymodule.xboyww()
# 模块.类
print(mymodule.MyClass().name)
2.导入任意路径下的模块
# ### 2.导入任意路径下的模块
"""自定义模块时,不能使用中文,也不能使用已存在的模块名,会被覆盖."""
import sys
print(sys.path)
"""
# 把路径添加到系统环境变量path当中,
# 执行命令时,系统会自动按照路径找到模块,从而引入
# 如果找不到当前模块所在的路径,直接报错
""" # 在windows中执行
sys.path.append(r"E:\python31_gx")
import mymodule2
print(mymodule2.ceshi100) import mymodule2 as m2
print(m2.ceshi200) """
# [linux]
['/mnt/hgfs/python31_gx/day21/import_bao',
'/home/wangwen/PycharmProjects/untitled',
'/usr/lib/python36.zip',
'/usr/lib/python3.6',
'/usr/lib/python3.6/lib-dynload',
'/usr/local/lib/python3.6/dist-packages',
'/usr/lib/python3/dist-packages'
] # [windows]
['E:\\python31_gx\\day21\\import_bao',
'E:\\py_mylianxi',
'E:\\py_mylianxi\\venv\\Scripts\\python36.zip',
'C:\\Users\\wangwen\\AppData\\Local\\Programs\\Python\\Python36\\DLLs',
'C:\\Users\\wangwen\\AppData\\Local\\Programs\\Python\\Python36\\lib',
'C:\\Users\\wangwen\\AppData\\Local\\Programs\\Python\\Python36',
'E:\\py_mylianxi\\venv', 'E:\\py_mylianxi\\venv\\lib\\site-packages'
]
"""
3.from ... import ...
# ### 3.from ... import ... 从 ... 导入 ...
# 导入单个
from mymodule import dog
print(dog) # 导入多个
from mymodule import cat,xboyww
print(cat)
xboyww() # 导入所有
""" * 代表所有 """
from mymodule import *
print(cat)
xgirl() # 导入的同时,起别名
from mymodule import xboyww as ww
ww()
*** 关于设置*号的导入范围:
# 可以设置*号的导入范围
from mymodule import *
print(cat)
# xboyww() error
'''可以在mymodule模块中设置__all__ = ["dog","cat"]来指定*号的导入范围'''
4.__name__ 魔术属性的使用
返回模块名字的魔术属性 __name__
如果当前文件是直接运行的,返回__main__
如果当前文件是间接导入的,返回当前文件名(模块名)
文件直接被执行的时候返回__main__
当成模块被导入的时候,返回模块名本身
包的部分
关于包,需要注意的点:
1.文件就是模块,文件夹就是包
2.__init__.py 对包(文件夹)进行初始化的脚本文件
导入包的时候,系统自动调用__init__.py文件,把init文件里面成员进行导入
3.可以通过__init__间接导入其他模块
1.import导入包
# ### (一)import 导入包的使用
# 1.获取包初始化文件中的成员
import package1
print(package1.ceshi301) # 2.导入包下的某些模块
# 方法一
import package1.mypath
package1.mypath.join() # 方法二(模拟os.path.join写法)
import package1
package1.mypath.join()
package1.mypath.getsize()
'''
注意:在方法二的情况下,需要在包内的__init__.py中写入from package1 import mypath
相当于通过__init__文件间接导入了join和getsize方法
'''
2.from ... import 从包导入相应成员
# 从包当中导入成员属性(__init__)
from package1 import ceshi301
print(ceshi301)
# 从包当中导入模块
from package1 import mypath
mypath.join()
# 引入包下的模块下的具体成员
from package1.mypath import getsize
getsize()
# 在引入的同时,起别名
from package1.mypath import getsize as gs , join as j
gs()
j() # 导入所有,可以指定*号引入的范围
from package1 import *
print(ceshi301)
# print(ceshi302) error
3.单入口模式(相对导入)
# ### (三) 单入口模式(相对导入)
import package2.pkg1.pgone_1 as ppp1
# print(ppp1.ceshi1000)
day21:正则函数&模块和包(import)的更多相关文章
- (11)python 模块和包
一.导入模块和包 模块相当于一个.py文件,包相当于带有个__init__.py一个文件夹,既可按模块导入也可按包导入. 1.导入模块或包 import 包名或模块名 (as 别名),包名或模块名 ( ...
- 第十八篇 模块与包--time&random模块&模块导入import(os.path.dirname(os.path.abspath(__file__)))
模块 在Python中, 一个.py文件就称为一个模块. 使用模块的好处: 1. 最大的好处就是大大提高了代码的可维护性 2. 编写代码不必从零开始.一个模块编写完毕,就可以被其他地方引用.在写其他程 ...
- 【Python实战】模块和包导入详解(import)
1.模块(module) 1.1 模块定义 通常模块为一个.py文件,其他可作为module的文件类型还有".pyo".".pyc".".pyd&qu ...
- day21.模块和包
博客整理来源:http://www.cnblogs.com/Eva-J/articles/7292109.html 模块 1.什么是模块 常见的场景:一个模块就是一个包含了python定义和声明的文件 ...
- day21 python之模块和包
一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编 ...
- python之import模块及包的调用
模块概念 在Python中,一个.py文件就称之为一个模块(Module).使用模块组织代码,最大的好处是大大提高了代码的可维护性 模块一共三种:python标准库.第三方模块.应用程序自定义模块. ...
- Python中的import,from...import以及模块、包、库的概念
首先,说明一下,我使用的是python3.6.3win32版本,使用的IDE是pycharm2017社区免费版. 刚开始接触python编程不久,有很多概念都不是特别清楚,但是我觉得既然选择,尽自己最 ...
- 当导用模块与包的import与from的问题(模块与包的调用)
当在views.py里写impor models会不会报错呢? 1.Python里面的py文件都是每一行的代码. 2.Python解释器去找一个模块的时候,只去sys.path的路径里找 3.djan ...
- Python之模块和包(Day21)
一.Python模块 Python模块(module),是一个Python文件,以.py结尾,包含了Python对象定义和Python语句. 模块让你能够有逻辑的组织你的Python代码段 把相关的代 ...
随机推荐
- USACO07 MAR Face The Right Way G
疫情当下,美帝又开始倒牛奶了,这一幕似曾相识啊~~~ 这个题目非常的应景,又是美国佬的奶牛 [题目地址] [一句话题意] N头牛排成一列1<=N<=5000.每头牛或者向前或者向后. 为了 ...
- [JAVA]字符串常量池String pool
字符串常量池(String Pool)保存着所有字符串字面量(literal strings),这些字面量在编译时期就确定.不仅如此,还可以使用 String 的 intern() 方法在运行过程中将 ...
- day53 html收尾
目录 一.解决浮动带来的影响 二.溢出属性 三.定位 四.验证浮动和定位是否脱离文档流 五.z-index模态框 六.透明度opacity 七.js简介 一.解决浮动带来的影响 块级标签内的浮动如果该 ...
- python数据处理(七)之数据探索和分析
1.探索数据 1.1 安装agate库 1.2 导入数据 1.3 探索表函数 a.排序 b.最值,均值 c.清除缺失值 d.过滤 e.百分比 1.4 连结多个数据集 a.捕捉异常 b.去重 c.缺失数 ...
- 爬虫04 /asyncio、selenium规避检测、动作链、无头浏览器
爬虫04 /asyncio.selenium规避检测.动作链.无头浏览器 目录 爬虫04 /asyncio.selenium规避检测.动作链.无头浏览器 1. 协程asyncio 2. aiohttp ...
- selenium 下拉到页面最底端
selenium操控浏览器下拉到页面最底端: https://www.cnblogs.com/TTyb/p/7662430.html #!/usr/bin/env python # -*- codin ...
- redis(十一):Redis 列表(List) (python)
# -*- coding: utf-8 -*- import redis r =redis.Redis(host="123.156.74.190",port=6379,passwo ...
- 【Nginx】面试官竟然问我Nginx如何生成缩略图,还好我看了这篇文章!!
写在前面 今天想写一篇使用Nginx如何生成缩略图的文章,想了半天题目也没想好,这个题目还是一名读者帮我起的.起因就是这位读者最近出去面试,面试官正好问了一个Nginx如何生成缩略图的问题.还别说,就 ...
- P1469 找筷子
摘要:有n根(n为奇数)长短不一的筷子,里面可以凑成(n-1)/2双筷子,只剩下一根不能凑对,问那根不能凑对的筷子有多长. 乍听起来好像不难,桶是一个好东西,可是一看数据:对于100%的数据,N< ...
- two types of friend
两类朋友 第一类,普通朋友,并不能分享一些隐私的感情,只能说一些事情,有一些只是认识的人或者虽然认识很多年但是也只能是这样的! 第二类,关心你,可以交流感清,明显更加亲密一点. 不要对第一类朋友说第二 ...