re模块是python提供的一套关于正则表达式的模块.核心功能有四个:

1.findall (查找所有,返回list)

lst=re.findall("m",'salalwmaopd')
print(lst) #['m']lst=re.findall(r"\d+","加速阶段20,安吉斯36")
print(lst)  #['20', '36']

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()) # 2000    5

其他操作

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;sret=re.subn(r"\d+","??","alksdad0212w1pdjv3na;s")  # 把字符串中的数字替换成??,替换了几次
print(ret)  # ('alksdad??w??pdjv??na;s', 3)# 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")) #  123456
print(ret1.group("zimu")) #eee#  split里有个坑
ret=re.split("\d+","eva3egon4yuan")
print(ret) #结果 : ['eva', 'egon', 'yuan']# 看下面
ret=re.split("(\d+)","eva3egon4yuan")    # 加了括号  很简单 表示 留刀
print(ret) #结果 : ['eva', '3', 'egon', '4', '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 022 (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__全部都导入

转载于:https://www.cnblogs.com/systemsystem/p/9778829.html

day022 python (re模块和 模块)相关推荐

  1. Python标准库——collections模块的Counter类

    更多16 最近在看一本名叫<Python Algorithm: Mastering Basic Algorithms in the Python Language>的书,刚好看到提到这个C ...

  2. Python实战之logging模块使用详解

    用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这时候print就不大方便了,所 ...

  3. 【廖雪峰python进阶笔记】模块

    1. 导入模块 要使用一个模块,我们必须首先导入该模块.Python使用import语句导入一个模块.例如,导入系统自带的模块 math: import math 你可以认为math就是一个指向已导入 ...

  4. Python标准库queue模块原理浅析

    Python标准库queue模块原理浅析 本文环境python3.5.2 queue模块的实现思路 作为一个线程安全的队列模块,该模块提供了线程安全的一个队列,该队列底层的实现基于Python线程th ...

  5. Python标准库threading模块Condition原理浅析

    Python标准库threading模块Condition原理浅析 本文环境python3.5.2 threading模块Condition的实现思路 在Python的多线程实现过程中,在Linux平 ...

  6. Python标准库asyncio模块基本原理浅析

    Python标准库asyncio模块基本原理浅析 本文环境python3.7.0 asyncio模块的实现思路 当前编程语言都开始在语言层面上,开始简化对异步程序的编程过程,其中Python中也开始了 ...

  7. python之堆heapq模块

    python之堆heapq模块 堆是一种特殊的树形结构,通常我们所说的堆的数据结构指的是完全二叉树,并且根节点的值小于等于该节点所有子节点的值. 堆是非线性的树形的数据结构,有两种堆,最大堆与最小堆. ...

  8. python自定义包或模块在Linux服务器导入错误的解决办法

    python自定义包或模块在Linux服务器导入错误的解决办法 在本地机器上跑python代码,自己定义的文件进行导包运行是没有问题,但是放到linux服务器上的时候就会提示 ImportError: ...

  9. python 路径往上一层_Python常用模块之模块、包介绍和相关语法

    在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很 ...

  10. Python核心模块——urllib模块

    2019独角兽企业重金招聘Python工程师标准>>> urllib模块中的方法 1.urllib.urlopen(url[,data[,proxies]]) 打开一个url的方法, ...

最新文章

  1. 【网站汇总】安装教程系列
  2. linux gzip 命令简介
  3. 【存储过程】Merge Into语句实现Insert/Update在Oracle中的应用
  4. C#ASP.NET执行BAT批处理代码
  5. OpenJudge NOI 1.5 15:银行利息
  6. 如何使用.NET Core,SQL和HTML和JavaScript构建CRUD应用程序
  7. python对浮点类型的数据进行格式化_(自用)Python Log2 数据类型、字符编码、格式化...
  8. ENVI学习总结(五)——辐射定标和大气校正(FLAASH/QUAC)
  9. Unity背包系统(二)背包UI设计
  10. 理想气体的质量流量计算
  11. flashplayer显示微软雅黑粗体bug
  12. 【汇正财经】短线交易行为的构成问题
  13. vue动态更改背景图
  14. 前端学习——Prop
  15. PHP防花生日记官网源码【前后端分离】源码
  16. VS code下开发单片机或者STM32程序
  17. oracle 注入 nc,oracle注入,utl_http方法
  18. vue 数据传输加密、加签、数字信封应用
  19. mac重装系统之后删除容器中的其他卷宗内容
  20. wh6服务器怎么修改,文华财经怎样设置云服务器

热门文章

  1. 利用SMS轻松实现资产管理,SMS2003系列之四
  2. Illustrator中文版教程,如何在 Illustrator 中为创建的图形添加颜色?
  3. indesign教程,如何创建对齐参考线?
  4. 如何在苹果Mac上设置文档样板,开启文档时自动复制?
  5. 红警 for Mac合集(Red Alert红色警戒)
  6. alfred 4 (mac提升效率工具)
  7. 如何在Mac上的键盘辅助功能中使用面板编辑器?
  8. 2.移植3.4内核-支持烧写yaffs2,裁剪内核并制作补丁
  9. [SDOI2011]打地鼠
  10. Typecho - MyTagCloud标签云插件