Python 正则表达式(高级用法)- search、findall、sub 、split
时间:2022-06-22
本文章向大家介绍Python 正则表达式(高级用法)- search、findall、sub 、split,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
仅供学习,转载请注明出处
re模块的高级用法
search
需求:匹配胖子老板说出的香烟价格
In [95]: re.search(r"d+","胖子老板:一包蓝利群17元啦").group()
Out[95]: '17'
In [96]:
findall
前面寻找smoke的故事中,我用来最终解决胖子老板的smoke次数寻找问题。 因为findall找出来返回的是一个list,那么只要用len()方法就可以知道次数了。
In [96]: str1 = "asdjkasldkjsmokelaksjdklasjdlasmokel;kajsdlkjasdsmoke"
In [97]: ret = re.findall(r"smoke",str1)
In [100]: print(ret)
['smoke', 'smoke', 'smoke']
In [101]: print(len(ret))
3
In [102]:
sub 将匹配到的数据进行替换
例如将上面的smoke进行替换为hello
In [104]: ret = re.sub(r"smoke","hello",str1)
In [105]: print(ret)
asdjkasldkjhellolaksjdklasjdlahellol;kajsdlkjasdhello
In [106]:
这种替换在爬虫的时候,我经常用来拼接替换图片的url地址这类的事项。
还有一个有趣的方式,修改的地方可以使用函数方法,如下:
需求:将匹配到的 整数+1
#coding=utf-8
import re
def add(temp):
strNum = temp.group()
num = int(strNum) + 1
return str(num)
ret = re.sub(r"d+", add, "python = 997")
print(ret)
ret = re.sub(r"d+", add, "python = 99")
print(ret)
运行结果:
python = 998
python = 100
split 根据匹配进行切割字符串,并返回一个列表
#coding=utf-8
import re
# 使用冒号进行切割
In [106]: ret = re.split(r":","胖子老板:一包烟17元啦")
In [107]: print(ret)
['胖子老板', '一包烟17元啦']
# 那么能不能根据多个条件进行切割呢?
In [108]:
# 使用 | 增加切割条件,这里我增加了 s 空格或者tab的切割。
In [108]: ret = re.split(r":|s","胖子老板:一包烟17元啦 肥仔白: 这么贵啊!")
In [109]: print(ret)
['胖子老板', '一包烟17元啦', '肥仔白', '', '这么贵啊!']
In [110]:
- sqlplus / as sysdba无法登录的奇怪报错 (r8笔记第36天)
- JSP与EL表达式重点学习笔记(1)
- R语言读CSV、txt文件方式以及read.table read.csv 和readr(大数据读取包)
- JSP与EL表达式重点学习笔记(2)
- Node.js真的无所不能?那些不适用的应用领域分析
- #!/bin/bash 与#!/bin/sh
- 客户端无法连接数据库的小问题(r8笔记第53天)
- Golang事务模型
- 厚土Go学习笔记 | 35. web服务器实现动态路径
- 数据库连接池、dbutil_知识点全掌握
- Golang 序列化之 ProtoBuf
- Golang RPC 之 gRPC
- 解决连通性问题的四种算法
- 使用shell批量生成数据整合式迁移的脚本(r8笔记第52天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Centos7安装轻量级TCP转发工具rinetd注册为服务的正确姿势 并设置开机自启 实践笔记 自用
- Connection open error . Connection Timeout Expired. The timeout period elapsed during the post-login
- macbook-12-2015款 安装win10系统 自用 实践笔记
- OpenGL ES 之attribute
- windows server 2012 r2 搭建文件服务器 问题记录 自用 实践笔记
- OpenGL ES 之uniform和varying
- OpenGL ES 绘制纹理
- Win10+Unlocker3+VMware15.5+MacOS10.14+xcode+QT for ios+虚拟机苹果系统 自用 实践笔记
- OpenGL ES 纹理过滤模式-glTexParameteri
- Jenkins时间修改为北京时间
- OpenGL ES for Android 绘制一个点
- OpenGL ES for Android 绘制线
- Jenkins自定义主题
- OpenGL ES for Android 绘制三角形
- Centos7 安装 Tomcat8 的正确姿势 并设置开机自启 实践笔记