day022 python (re模块和 模块)
re模块是python提供的一套关于正则表达式的模块.核心功能有四个:
1.findall (查找所有,返回list)
lst=re.findall("m",'salalwmaopd')
print(lst) #['m']
lst=re.findall(r"\d+","加速阶段20,安吉斯36")
print(lst) #['', '']
2 search (会进行匹配,但如果匹配到了第一个结果,就会返回这个结果,如果匹配不到search则返回none
ret=re.search("dad","5dad,dakda555")
print(ret.group()) # dad
3 match(只能从字符串开头进行匹配)
ret=re.match("v","vsaDAW")
print(ret.group()) #v
4 finditer (和findall差不多,只不过返回的是迭代器)
ret=re.finditer("\d+","sdkal2000.aisjd5")
for i in ret: # 从迭代器中获取到的是分组的信息
print(i.group()) #
其他操作
ret=re.split('[ab]','asdafvacaba') # 按a或者b来切割
print(ret) #['', 'sd', '', 'v', 'c', '', '', '']
ret=re.sub(r"\d+","??","alksdad0212w1pdjv3na;s") # 把字符串中的数字替换成??
print(ret) # alksdad??w??pdjv??na;s
ret=re.subn(r"\d+","??","alksdad0212w1pdjv3na;s") # 把字符串中的数字替换成??,替换了几次
print(ret) # ('alksdad??w??pdjv??na;s', )
# obj = re.compile(r"\d+") # 写一次下面直接用
# lst = obj.findall("大阳哥昨天赚了5000块")
# lst2 = obj.findall("银行流水5000, 花了6000")
# print(lst)
# print(lst2)
obj = re.compile(r"\d+e{3}")
obj1 = re.compile(r"(?P<id>\d+)(?P<zimu>e{3})") # (?P<名字> 正则) 把正则匹配到的内容分组成"名字"组
ret = obj.search("abcdefg123456eeeee")#
ret1 = obj1.search("abcdefg123456eeeee")#
print(ret.group()) #123456eee
print(ret1.group("id")) #
print(ret1.group("zimu")) #eee
# split里有个坑
ret=re.split("\d+","eva3egon4yuan")
print(ret) #结果 : ['eva', 'egon', 'yuan']
# 看下面
ret=re.split("(\d+)","eva3egon4yuan") # 加了括号 很简单 表示 留刀
print(ret) #结果 : ['eva', '', 'egon', '', 'yuan']
# findall 也有坑:
ret = re.findall('www.(baidu|oldboy).com', 'www.baidu.com')
print(ret) #['baidu'] 匹配结果为这个 但正常是不想要这个的
# 这是因为findall会优先把匹配结果组里内容返回,如果想要匹 配结果,取消权限即可
# 解决方式:
ret = re.findall('www.(?:baidu|oldboy).com', 'www.baidu.com') # 直接加?:取消权限
print(ret) # ['www.baidu.com'] 正常了
二 import
看代码 :
yitian.py
print("当当当")
main_person_man="无忌哥哥"
main_person_wowan="赵敏"
low_person_man_one="成昆"
low_person_man_two='周芷若'
def fight_on_light_top():
print("光明顶大战",main_person_man,'破坏了',low_person_man_one,'的阴谋')
def fight_in_shaolin():
print("少林林寺⼤大战", main_person_man, "破坏了了", low_person_man_two, "的大阴 谋")
金庸.py import yitian # 导入模块此时会默认执行该模块的中的代码
# import yitian # 该模块已经导入过了,不会重复执行代码
# import yitian
import sys
if __name__ =='__main__': # 加了 __name__ 可以屏蔽掉一些不希望别人导入就运行的一些代码
# 只有运行自己才会打印 导用的时候是不启动这里的
yitian.main_person_man='大师'# 在此模块中改变了主角名字
# print(sys.modules.keys()) # 查看导入的模块
print(yitian. main_person_man) ##使用模块中定义好的名
yitian.fight_on_light_top() # 调用模块中的函数 #此时我们在金庸模块中引入了yitian模块. # 导入模块创立新的名称空间
#在新的名称空间里运行该模块中的代码
#创建模块的名字,并使用该名字作为该模块在当前模块的名字.可以使用globals来查看模块的名称空间 #查看自己的名称空间
# print(globals()) #yitian': <module 'yitian' from 'E:\\untitled\\day (re模块 和模块)\\yitian.py'>
金庸用.py import yitian
import 金庸
print(yitian.main_person_man) # 大师 上个模块改变了主角名字 所以此刻出来的是大师
yitian.fight_in_shaolin() # 少林林寺⼤大战 大师 破坏了了 周芷若 的大阴 谋 # 如何避免此类问题呢 引入__name__
# 当我们把一个模块作为程序运行的入口时. 此时该模块的__name__是"__main__" , 而 如果我们把模块导入时. 此时模块内部的__name__就是该模块自
三 form xxx import xxx
在使用from的时候, python也会给我们的模块创建名称空间,这一点和import是⼀样的,
但是from xxx import xxx的时候,我们是把这个空间中的一些变量引入过来了,
说白了,就 是部分导入,当一个模块中的内容过多的时候.
我们可以选择性的导入要使用的内容.
from yitian import fight_in_shaolin
fight_in_shaolin()
此时是可以正常运行的. 但是我们省略了之前的模块,函数() 直接函数()就可以执行了, 并且from语句也支持⼀行语句导入多个内容.
from yitian import fight_in_shaolin, fight_on_light_top, main_person_man fight_in_shaolin()
fight_on_light_top()
print(main_person_man)
同样支持as
from yitian import fight_in_shaolin, fight_on_light_top, main_person_man as
big_lao
fight_in_shaolin()
fight_on_light_top()
print(big_lao)
最后. 看一下from的坑,当我们从一个模块中引入一个变量的时候,如果当前文件中出现了重名的变量时. 会覆盖掉模块引入的那个变量.
from yitian import main_person_man
main_person_man = "超级大灭绝"
print(main_person_man)
所以,不要重名 切记. 不要重名! 不仅是变量量名不要重复,我们自己创建的py文件的名字不要和系统内置的模块重名.否则,引入的模块都是python内置的模块. 切记, 切记.
补充 :
from xxx import *
从xxx导入所有. 如果模块内部有__all__ 导入all中的内容. 如果没有__all__全部都导入
day022 python (re模块和 模块)的更多相关文章
- Python(五)模块
本章内容: 模块介绍 time & datetime random os sys json & picle hashlib XML requests ConfigParser logg ...
- [转载]Python中的sys模块
#!/usr/bin/python # Filename: cat.py import sys def readfile(filename): '''Print a file to the stand ...
- Python安装包或模块的多种方式汇总
windows下安装python第三方包.模块汇总如下(部分方式同样适用于其他平台): 1. windows下最常见的*.exe,*msi文件,直接运行安装即可: 2. 安装easy_install, ...
- Python 五个常用模块资料 os sys time re built-in
1.os模块 os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果. os.name:返回当前操作系统名称('posix', 'nt', ' ...
- python基础知识8——模块1——自定义模块和第三方开源模块
模块的认识 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需 ...
- Python 第五天 模块(2)
模块,用一砣代码实现了某个功能的代码集合. 有两种存在的方式 1.写到一个文件夹里面 2.py文件 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和 ...
- Python中的random模块,来自于Capricorn的实验室
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- python函数和常用模块(三),Day5
递归 反射 os模块 sys模块 hashlib加密模块 正则表达式 反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数 ...
- Python基础之--常用模块
Python 模块 为了实现对程序特定功能的调用和存储,人们将代码封装起来,可以供其他程序调用,可以称之为模块. 如:os 是系统相关的模块:file是文件操作相关的模块:sys是访问python解释 ...
随机推荐
- vue2整个项目中,数据请求显示loading图
一般项目中,有时候会要求,你在数据请求的时候显示一张gif图片,然后数据加载完后,消失.这个,一般只需要在封装的axios中写入js事件即可.当然,我们首先需要在app.vue中,加入此图片.如下: ...
- 前端小菜鸡使用Vue+Element笔记(二)
记录一下在使用Vue和Element做项目时遇到过的难点... 1.在 <el-table>表格中嵌入 select下拉选择框,以及 tooltip提示框的使用 主要定义格式如红色标记代码 ...
- SpringCloud调用服务示例
SpringCloud調用服務示例. SpringCloud简介: Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务 ...
- 当你有双网络(内部网+互联网)时,如何透明NAT给其他电脑上网。虚拟机+爱快
一:简介 具体环境是这样的:单位没有提供互联网连接,都是内部网,linux服务器,无法连接源更新,docker无法pull镜像,python无法在线pip安装包. 真是郁闷到想死啊. 好在我的笔记本有 ...
- oracle日志相关的表
SELECT * FROM all_objects t where object_name like '%EN_CONCAT_IM%';DBA_HIST_SQLTEXTDBA_HIST_SQLSTA ...
- 图的拓扑排序,AOV,完整实现,C++描述
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- 1.3 CPU简介
目录 CPU的功能模块 cpu总线 CPU寄存器 16位cpu的寄存器组 32位cpu的寄存器组 64位cpu的寄存器组 CPU的功能模块 CPU从逻辑上可以划分成3个模块,分别是控制单元.运算单元和 ...
- 7.4 C++标准模板库(STL)的概念
参考:http://www.weixueyuan.net/view/6401.html 总结: 标准模板库为C++提供了完善的数据结构及算法. 标准模板库包括三部分:容器.算法和迭代器. 容器是对象 ...
- python中变量命名的基本规则,标识符和关键字
变量的命名 目标 标识符和关键字 变量的命名规则 0.1 标识符和关键字 1.1 标识符 标示符就是程序员定义的 变量名.函数名 名字 需要有 见名知义 的效果,见下图:  标示符可以由 字母.下划 ...
- TransactionScop事务机制的使用
如果在C#中使用TransactionScope类(分布式事务),则须注意如下事项:1.在项目中引用using System.Transactions命名空间(先要在添加net组件的引用); 2.具体 ...