第五章 模块之 struct、dis、正则表达式、异常处理
5.15 struct模块
pack 能够把所有的数字都固定的转换成4字节
5.16 dis
dis.dis 查看计算机指令
5.16 正则表达式
基础
正则表达式概念: 是一种规则(元字符,量词)
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
re 模块和正则表达式的关系
re 模块本身只是用来操作正则表达式,和正则表达式一点关系都没有
应用;
匹配字符串
表单验证
爬虫
[ ] 字符组
本身是哪一个字符,就匹配字符串中哪一个字符
字符组[字符1字符2],一个字符组就代表匹配一个字符,只要这个字符出现在字符串中,那么久说明这个字符能匹配上
字符中还可以使用范围
所有的范围都必须遵循ascii码从小到大来指定

元字符
\ 转义符 可以转义所有
\ d (digit) 能匹配所有0-9之间的数字
\w (word) 能匹配大小写字母,数字,下划线
\s (space) 能匹配 空白 空格 换行符 制表符
\ t (table) 只能匹配制表符
\ n (next) 只能匹配换行符
\D 表示除 数字所有
\W 表示除 大小写字母,数字,下划线 的所有
\S 表示除 空白 空格 换行符 制表符 的所有
[\d\D] [\w\W] [\s\S] 能表示一切字符
. 表示除换行符之外的任意内容
[ ] 字符组只要在中括号内的所有字符都符合规则的字符
[ ^ ] 字符组只要在中括号内的所有字符都不符合规则的字符
^ 表示一个字符,只匹配一个开头
$ 表示一个字符的结束
^abc$ 表示约束以a开头,c结尾
| 或 表示两个规则哟重叠的部分,总是长的在前面,短的在后面
() 分组 表示给一部分正则规定为一组,| 这个符号的作用域就可以缩小了
量词
{ n } 表示只能出现n次
{ n, } 表示至少出现n次
{ n,m } 表示至少出现n次,至多出现m次
? 表示匹配0次或者1次,可有可无但是又只能有1个
+表示匹配一次或者多次*表示匹配0次或者多次,可有可无但是有可以有多个
默认贪婪匹配:总是会在符合量词条件的范围为尽量多的匹配
非贪婪匹配(惰性匹配):总是会匹配符合条件范围内尽量小的字符串
元字符 量词 ?x 表示元字符规则在量词范围内匹配,一遇到x就会停止
. * ? x 表示匹配任意的内容多次遇到X就会立即停止
元字符
元字符量词
元字符量词?
\d+?x .*?x 爬虫
5.17 异常处理
基本格式
try:
pass
except Exception as e:
pass
练习
try:
v = []
v[11111] # IndexError
except ValueError as e:
pass
except IndexError as e:
pass
except Exception as e:
print(e) # e是Exception类的对象,中有一个错误信息。
finally:
print('最后无论对错都会执行')# 练习一
import requests
try:
ret = requests.get('http://www.google.com')
print(ret.text)
except Exception as e:
print('请求异常') # 练习二
def func(a):
try:
return a.strip()
except Exception as e:
pass
return False
v = func('alex')
if not v:
print('函数执行失败')
else:
print('结果是',v)练习题
# 1. 写函数,函数接受一个列表,请将列表中的元素每个都 +100
def func(arg):
result = []
for item in arg:
if item.isdecimal():
result.append(int(item) + 100)
return result
# 2. 写函数去,接受一个列表。列表中都是url,请访问每个地址并获取结果。
import requests
def func(url_list):
result = []
try:
for url in url_list:
response = requests.get(url)
result.append(response.text)
except Exception as e:
pass
return result
def func2(url_list):
result = []
for url in url_list:
try:
response = requests.get(url)
result.append(response.text)
except Exception as e:
pass
return result
func(['http://www.baidu.com','http://www.google.com','http://www.bing.com'])
主动触发异常
try:
int('123')
raise Exception('阿萨大大是阿斯蒂') # 代码中主动抛出异常
except Exception as e:
print(e)
# 实例
def func():
result = True
try:
with open('x.log',mode='r',encoding='utf-8') as f:
data = f.read()
if 'alex' not in data:
raise Exception()
except Exception as e:
result = False
return result自定义异常
# 实例一
class MyException(Exception):
pass
try:
raise MyException('asdf')
except MyException as e:
print(e)
# 实例二
class MyException(Exception):
def __init__(self,message):
super().__init__()
self.message = message
try:
raise MyException('asdf')
except MyException as e:
print(e.message)总结
函数高级 5*
嵌套
装饰器
模块分类和定义 4*
内置模块
os
sys
...
第三方
requests
xlrd
自定义模块
文件
文件夹 + init.py【包】
导入模块
sys.path
导入
import
from xx.xxx import xx
第五章 模块之 struct、dis、正则表达式、异常处理的更多相关文章
- 第五章 模块之 logging、copy、re
5.12 logging 日志模块 报警等级 CRITICAL = 50 # 最高FATAL = CRITICALERROR = 40WARNING = 30WARN = WARNINGINFO = ...
- Python学习系列----第五章 模块
5.1 如何引入模块 在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入.在调用math模块中的函数时,必须这样引用: ...
- 第五章 模块之random 、hashlib、time /datetime
5.2 random 返回随机生成的一个实数 random.randint() 返回随机生成的一个实数 import random #调用模块def get_random_code(length=6 ...
- 第五章 模块之 shtil 、 json / pickle、importlib、collections
5.8 shtil 高级的 文件.文件夹.压缩包 处理模块 shutil.rmtree 删除目录 import shutilshutil.rmtree(path) shutil.move 重命名:移动 ...
- 第五章 模块之 getpass、sys、os
5.5 getpass 密码不显示(只能在终端运行) 密码不显示(只能在终端运行) import getpasspwd = getpass.getpass('请输入密码:')if pwd == '1 ...
- 进击的Python【第五章】:Python的高级应用(二)常用模块
Python的高级应用(二)常用模块学习 本章学习要点: Python模块的定义 time &datetime模块 random模块 os模块 sys模块 shutil模块 ConfigPar ...
- Python第五章__模块介绍,常用内置模块
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
- 简学Python第五章__模块介绍,常用内置模块
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...
随机推荐
- 1、vueJs基础知识01
vue是框架,vue.js是vue框架的核心js库 库:是一个封装好的特定的方法的集合,提供给开发者使用,库没有控制权,控制权在使用者手中.代表:jQuery.underscore.util 框架:框 ...
- Java通过JDBC连接MySQL数据库(一)
JDBC JAVA Database Connectivity java 数据库连接 为什么会出现JDBC SUN公司提供的一种数据库访问规则.规范, 由于数据库种类较多,并且java语言使用比较广泛 ...
- JAVA的日期类DATE
好记性不如烂笔头. 1:常见场景 字符串转时间格式,日期转换字符串(在前后端交互 json) 导入包(好像我的IDEA 不知道装了什么插件 会自动补齐提示) import java.text.Par ...
- 第06组 Alpha冲刺(3/6)
队名:拾光组 组长博客链接 作业博客链接 团队项目情况 燃尽图(组内共享) 组长:宋奕 过去两天完成了哪些任务 主要完成了用户论坛模块的接口设计 完善后端的信息处理 GitHub签入记录 接下来的计划 ...
- Qt 操作QDomDocument对象修改节点
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/liulihuo_gyh/article/d ...
- Spark(四十八):Spark MetricsSystem信息收集过程分析
MetricsSystem信息收集过程 参考: <Apache Spark源码走读之21 -- WEB UI和Metrics初始化及数据更新过程分析> <Spark Metrics配 ...
- Tosca :配置环境参数
# 跟Modules TestCases并列 ,右键创建 #再右键创建配置(结构自己安排) #再创建配置参数 #使用配置参数 #引用配置的环境参数
- git pull There is no tracking information for the current branch.
在高版本的 git下面,也许会看见这样的提示: 解决方案:指定当前工作目录工作分支,跟远程的仓库,分支之间的链接关系. 比如我们设置master对应远程仓库的master分支 git branch - ...
- 禁止select标签选择,禁止select组件change值
大家知道, 对于HTML控件select, 是没有readOnly属性的,所以设置它并不起作用,如: 如果用disabled的话,提交时又取不到值. 那有什么方法可以实现?可以有一个折中的方法,如下: ...
- GANomaly: Semi-Supervised Anomaly Detection via Adversarial Training-1-论文学习
通过对抗训练实现半监督的异常检测 Abstract 异常检测在计算机视觉中是一个经典的问题,即从异常中确定正常,但是由于其他类(即异常类)的样本数量不足,所以数据集主要基于一个类(即正常类).虽然该问 ...