模块和正则表达式

  • 模块
    • 1.模块就是程序
    • 2.命名空间
    • 3.导入模块
    • 4.模块的主要作用
    • 5.搜索路径
    • 6.包
  • 正则表达式
    • 1.正则表达式匹配原则
    • 2.常用元字符
    • 3.正则表达式的转义
    • 4.贪婪模式和非贪婪模式
    • 5.正则表达式分组
    • 6.re模块使用
    • 7.flags扩展功能
    • 8. 正则表达式练习
  • 知识回顾
  • 第二次考核总结

模块

1.模块就是程序

模块是更高级的封装。先回顾一下以前学过的封装:
(1)容器(列表、元组、字符串、字典等),是对数据的封装;
(2)函数,是对语句的封装;
(3)类,是对方法和属性的封装,也就是对函数和数据的封装。
(Python中将不能修改的值称为不可变的,不可变的列表称为“元组”。)

2.命名空间

命名空间表示标识符的可见范围。
在Python中,每个模块都会维护一个独立的命名空间,应该将模块名加上,才能够正常使用模块中的函数。

3.导入模块

( a )import 模块名

def c2f(cel):fah=cel*1.8+32return fah
def f2c(fah):cel=(fah-32)/1.8return cel

再写一个文件导入刚才的模块:

import TemperaturnConversion
print("0摄氏度=%.2f华氏度"%TemperaturnConversion.c2f(0))
print("0华氏度=%.2f摄氏度"%TemperaturnConversion.f2c(0))

( b )from 模块名 import 函数名

from TemperaturnConversion import c2f,f2c
print("0摄氏度=%.2f华氏度"% c2f(0))
print("0华氏度=%.2f摄氏度"% f2c(0))

( c )import 模块名 as 新名字

import TemperatureConversion as tcprint("32摄氏度=%2f华氏度"%tc.c2f(32))
print("99华氏度=%2f摄氏度"%tc.f2c(99))

4.模块的主要作用

模块的主要作用:1.封装组织Python的代码;2.实现代码的重用。

def c2f(cel):fah=cel*1.8+32return fah
def f2c(fah):cel=(fah-32)/1.8return cel
def test():print("测试,0摄氏度=%.2f华氏度"%c2f(0))print("测试,0华氏度=%.2f摄氏度"%f2c(0))
if __name__=="__main__":test()

5.搜索路径

搜索路径就是一组目录,可以通过sys模块中的path变量显示出来。

6.包

创建一个包的具体操作如下:
(1)创建一个文件夹用于存放相关的模块,文件夹的名字即包的名字。
(2)在文件夹中创建一个__init__.py的模块文件,内容可以为空。
(3)将相关的模块放入文件夹中。
(注意:在第(2)步中,必须在目录下建立一个__init__.py模块,可以是一个空文件,也可以写一些初始代码,这是Python的规定,用来告诉Python将该目录当成一个包来处理。)

正则表达式

1.正则表达式匹配原则

1.正确性,能够正确地匹配出目标字符串;
2.排他性,除了目标字符串之外尽可能少的匹配其他内容;
3.全面性,尽可能考虑到目标字符串的所有情况,不遗漏。

2.常用元字符

(1)点号(.)表示匹配除换行符外的任何字符。

import re
re.findall('张.',"张三")
['张三']

(2)脱字符(^)表示匹配字符串的开始位置,也就是说,只有目标字符串出现在开头才会匹配。

re.findall("^张三","张三你好")
['张三']

(3)美元符号($)表示匹配字符串的结束位置,也就是说,只有目标字符串出现在末尾才会匹配。

re.findall("Python$","你好,Python")
['Python']

3.正则表达式的转义

(1)如果使用正则表达式匹配特殊字符则需要加\表示转义;
(2)在编程语言中,常使用原生字符串书写正则表达式避免多重转义的麻烦。
(在字符串前端使用了 ‘r’ 或 ‘R’ 的字符串叫原生字符串。
原生字符串中的每个字符都表示它本身的含义。)

4.贪婪模式和非贪婪模式

(1)定义:
贪婪模式:默认情况下,匹配重复的元字符总是尽可能多的向后匹配内容。

import re
s="[花千骨],[杉杉来了],[陆贞传奇],[楚乔传]"
re.findall(r"\[.+\]",s)
['[花千骨],[杉杉来了],[陆贞传奇],[楚乔传]']

非贪婪模式(懒惰模式):让匹配重复的元字符尽可能少的向后匹配内容。

re.findall(r"\[.+?\]",s)
['[花千骨]', '[杉杉来了]', '[陆贞传奇]', '[楚乔传]']

(2)贪婪模式转化为非贪婪模式只需要在重复元字符后加" ? "即可。

5.正则表达式分组

(1)定义:在正则表达式中,以()建立正则表达式的内部分组,子组是正则表达式的一部分,可以作为内部整体操作对象。
(2)作用:
a.可以被作为整体操作,改变元字符的操作对象。

re.search(r'(ab)+',"ababababab").group()
'ababababab'

b.可以通过编程语言某些接口获取匹配内容中子组对应的部分

re.search(r"(https|http|ftp|file)://\S+","http://www.baidu.com").group(1)
'http'

(3)捕获组
可以给正则表达式的子组起一个名字,表达该子组的意义。这样有名称的子组即为捕获组。

re.search(r'(?P<hhh>ab+)',"ababababab").group('hhh')
'ab'

6.re模块使用

(1) re.findall(pattern,string,flags = 0)
功能:根据正则表达式匹配目标字符串内容
参数:pattern 正则表达式
string 目标字符串
flags 功能标志位,扩展正则表达式的匹配
返回值:匹配到的列表内容,如果正则表达式有子组只能获取子组内容

import re
s="Alex:1994,Sunny:1996"
pattern = r"(\w+):(\d+)"
l=re.findall(pattern,s)
print(l)
[('Alex', '1994'), ('Sunny', '1996')]

(2)regex = compile(pattern,flags = 0)
功能:生成正则表达式对象
参数:pattern 正则表达式
flags 功能标志位,扩展正则表达式的匹配
返回值:正则表达式对象

regex = re.compile(pattern)
l=regex.findall(s,0,12)
print(l)
[('Alex', '1994')]

(3)re.split(pattern,string,flags = 0)
功能:使用正则表达式匹配内容,切割目标字符串
参数:pattern 正则表达式
string 目标字符串
flags 功能标志位,扩展正则表达式的匹配
返回值:切割后的内容列表

import re
s="Alex:1994,Sunny:1996"
pattern = r"(\w+):(\d+)"
l=re.split(r'[:,]',s)
print(l)
['Alex', '1994', 'Sunny', '1996']

(4)re.sub(pattern,replace,string,max,flags = 0)
功能:使用一个字符串替换正则表达式匹配到的内容
参数:pattern 正则表达式
replace 替换的字符串
string 目标字符串
max 最多替换几处,默认替换全部
flags 功能标志位,扩展正则表达式的匹配
返回值:替换后的字符串

import re
s="Alex:1994,Sunny:1996"
pattern = r"(\w+):(\d+)"
s=re.sub(r':',"_",s)
print(s)
Alex_1994,Sunny_1996

(5)re.match(pattern,string,flags = 0)
功能:匹配某个字符串中开始位置
参数:pattern 正则表达式
string 目标字符串
返回值:匹配内容 match object

import re
s="Alex:1996,Sunny:1998"
pattern =r"(\w+):(\d+)"
m=re.match(r'\w+?',s)
print(m.group())
A

(6)re.search(pattern,string,flags=0)
功能:匹配目标字符串中第一个符合内容的
参数:pattern 正则表达式
string 目标字符串
返回值:匹配内容 match object

import re
s="alex:1996,bop:1998"
pattern =r"(\w+):(\d+)"
m=re.search(r'\d+',s)
print(m.group())
1996

(7)re.finditer(pattern,string,flags = 0)
功能:根据正则表达式匹配目标字符串内容
参数:pattern 正则表达式
string 目标字符串
flags 功能标志位,扩展正则表达式的匹配
返回值:匹配结果的迭代器

import re
s="alex:1996,bop:1998"
pattern =r"(\w+):(\d+)"
it = re.finditer(pattern,s)
for i in it:print(i)<re.Match object; span=(0, 9), match='alex:1996'>
<re.Match object; span=(10, 18), match='bop:1998'>

(8)re.fullmatch(pattern,string,flags = 0)
功能:完全匹配某个目标字符串
参数:pattern 正则表达式
string 目标字符串
返回值:匹配内容 match object

import re
s="快乐,辉煌灿烂"
pattern = r'\d+'
m=re.fullmatch(r'[,\w]+',s)
print(m)
['快乐,辉煌灿烂']

7.flags扩展功能

a.只能匹配ASCII编码

import re
s='''Hello
北京'''
regex=re.compile(r'\w+',flags=re.A)
l=regex.findall(s)
print(l)
['Hello']

b.不区分大小写

import re
s='''Hello
北京'''
regex = re.compile(r'[a-z]+',flags=re.I)l=regex.findall(s)
print(l)
['Hello']

c.可以匹配换行

import re
s='''Hello
北京'''
regex=re.compile(r'.+',flags=re.S)
l=regex.findall(s)
print(l)
['Hello\n北京']

d.^ & 匹配每一行开头结尾位置

import re
s='''Hello
北京'''
regex=re.compile(r'^北京',flags=re.M)
l=regex.findall(s)
print(l)
['北京']
regex=re.compile(r'Hello&',flags=re.M)
l=regex.findall(s)
print(l)
['Hello']

(若想使用多个flags,可以使用按位或连接)

8. 正则表达式练习

1.匹配一个.com邮箱格式字符串

import re
re.findall(r"\w+@\w+\.com","qq@163.com")
['qq@163.com']

2.匹配一个由8-12位数字字母下划线组成的密码

import re
re.findall(r"\w{8,12}","zxcvb12345")
['zxcvb12345']

3.匹配一个由整数、负数、整数、小数、分数、百分数组成的数字

import re
re.findall(r"-?\d+/?\.?\d*%?","99 -6 3.7 77% 6/7")
['99', '-6', '3.7', '77%', '6/7']

4.匹配一段文字中以大写字母开头的单词

import re
re.findall(r"\b[A-Z][-_a-zA-Z]*","Hello,Python,oMy")
['Hello', 'Python']

知识回顾

Python中实现列表中某个元素的3种方法:remove,pop,del.
(1)remove:删除单个元素,删除首个符合条件的元素,按值删除

s=[1,2,3,4,5]
s.remove(5)
print(s)
[1,2,3,4]

(2)pop:删除单个或多个元素,根据索引值删除

s=[1,2,3,4,5]
s.pop(1)
print(s)
[1,3,4,5]

(3)del:根据索引值来删除;删除指定范围内的值;删除整个数据对象

s=[1,2,3,4,5]
del s[1:3]
print(s)
[1,4,5]

第二次考核总结

与第一次考核成绩相比,第二次有了不明显进步,主要是因为这两周没有再出现掐点到小组的情况,能够保证基本的学习时间;同时在小组的效率也有了一定提高。做的不够好的地方就是过分依赖网络上别人的做题思路,在接下来的学习中要改进这一点。还有一点做的不够好的地方就是遇到不会的题或知识想不明白就放弃了,没有钻研精神。学习是一个持之以恒的过程,要要踏实地,一步一个脚印。
我总结了一下考核题不会做的原因:平时做题少,做过的题没有完全掌握。为了改善这点,我觉得可以利用闲暇时间多记记基础知识,毕竟只有坚实的基础才能使后面的学习更加顺利。还要不定时复习回顾以前学的知识,如果不进行复习,过段时间就全都忘了,过后还得重新学习,这样就相当于每天都在学习新知识,无形中给自己增加了负担。
要培养自己对学习的兴趣,提高自己的注意力。继续努力。

Python基础——模块和正则表达式相关推荐

  1. python 基础 之 re正则表达式的知识点整理,并简单使用说明

    python 基础 之 re正则表达式的知识点整理,并简单使用说明 目录 python 基础 之 正则表达式的知识点整理,并简单使用说明 一.简单介绍

  2. python re 模块及正则表达式调用认识 (2)

    接<python re 模块及正则表达式调用认识> \number 匹配与前面组编号相匹配的文本.从1开始编号到99. For example, (.+) \1 matches 'thet ...

  3. python re模块_python 正则表达式 (重点) re模块

    京东的注册页面,打开页面我们就看到这些要求输入个人信息的提示. 假如我们随意的在手机号码这一栏输入一个11111111111,它会提示我们格式有误. 这个功能是怎么实现的呢? 假如现在你用python ...

  4. Python基础模块:图像处理模块@PIL(批量分类处理图片及添加水印)

    大家好,才哥又来了! 又要上班了,春节总是过的太匆匆. 最近接到一个需求,把一批照片按照分辨率进行分类存储,再将其中指定宽高比的照片设置为特定的分辨率且添加水印. 以下是简单的效果: 目录: 文章目录 ...

  5. 【Python基础】字符串 正则表达式

    字符串 & 正则表达式 一.字符串 二.函数处理 1.查找 2.分割 3.大小写转换 4.修剪 5.检测开头结尾 6.排版 7.串型判断 8.语句转化 三 .正则表达式匹配 1.正则模块处理 ...

  6. Python基础-模块

    模块,用一堆代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  7. Python基础 模块

    点这里查看Python的所有内置函数 介绍: Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地 ...

  8. python基础---模块与包

    1.模块导入方法 常见的场景: 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀,导入模块可以实现功能的重复利用 import加载的模块分为四个通用类别: 1 使 ...

  9. Python 第2周 - Python基础-模块\数据运算

    内容 模块初识 数据运算 bytes数据类型 python数据类型 列表的使用 元组与购物车操作 购物车程序练习 字符串常用操作 字典的使用 三级菜单实例 本周作业-购物车优化 一.模块初识 Pyth ...

  10. Python基础——模块的安装

    文章目录 1.前言 2.什么是外部模块 3.安装 Numpy 1.前言 安装外部的模块有很多种方式, 不同的系统安装形式也不同. 比如在 Windows 上安装 Python 的一些包, 可能还会要了 ...

最新文章

  1. 解决‘tf.ResizeNearestNeighbor‘ op is neither a custom op nor a flex op
  2. 微x怎么设置主题_红人堂:抖音直播预告文案怎么写?5个小技巧提高你的文案吸引力!...
  3. R语言观察日志(part9)--RMarkdown之输出格式
  4. 给Domino系统管理员的十二项建议
  5. Serverless 实战 —— Serverless 架构揭秘与静态网站部署实战
  6. 43. 算法调用优先于手写的循环
  7. 华硕k5555l拆解图解_华硕k50id的拆机过程详解【图文教程】
  8. autojs颜色渐变效果
  9. 天天聚财网———2014年最具潜力的P2P借贷平台
  10. JSD-2204-API-JavaIO-Day02
  11. EndNote自动生成毕业论文GB7714引文格式教程
  12. POI DataValidation 删除数据有效性验证
  13. Schedule用法实例
  14. 泛函分析笔记2:赋范空间
  15. 业余数学牛人的数学自学心得(转)
  16. 人工智能 02. 图像识别
  17. 微信发送视频给好友,这篇文章保证原画质不被压缩
  18. 【数据库和SQL学习笔记】1.SQL语言的功能和特点,数据定义语言和应用,主键和外键
  19. 网络领域知产保护难题简析
  20. (详解)矩阵快速幂详解与常见转移矩阵的构造

热门文章

  1. tumblr_使用Tumblr创建美丽且易于更新的博客
  2. plc是微型计算机,plc控制系统与微型计算机系统有什么区别
  3. centos7系统时间校对(和北京时间同步)
  4. 怎么打开服务器注册表,如何利用Win7系统注册表设置Windows服务启动顺序
  5. 笔记本电脑接上hdmi后 笔记本无声音
  6. oracle analyze any,Oracle 工具:Analyze
  7. python改变当前工作目录_在python中更改当前工作目录
  8. ipod nano7安装linux,奔泪求助ipod nano5怎么取消外放功能
  9. 电容的作用?电容器的作用?
  10. Matlab DCT详解