了解`re`模块的`split()`, `sub()`, `subn()`方法的作用
在Python中,re模块(即正则表达式模块)提供了强大的字符串处理能力,允许你通过模式匹配来执行复杂的文本搜索、替换和分割等操作。其中,split(), sub(), 和 subn() 方法是re模块中非常实用的几个函数,它们各自在字符串处理中扮演着重要的角色。下面,我将详细解释这三个方法的作用、用法、以及它们在实际应用中的例子。
1. split() 方法
作用
split() 方法用于根据正则表达式匹配的结果来分割字符串。它类似于字符串的内置 split() 方法,但提供了更强大的分割能力,因为你可以指定一个正则表达式作为分隔符,而不仅仅是单个字符或简单的字符串。
语法
re.split(pattern, string, maxsplit=0, flags=0) |
- pattern:正则表达式模式。
- string:需要被分割的字符串。
- maxsplit:分割次数,默认为0,表示分割所有匹配项。如果非零,则最多分割
maxsplit次。 - flags:正则表达式标志位,用于控制正则表达式的匹配方式,如忽略大小写、多行匹配等。
返回值
返回一个列表,包含所有被分隔符分割后的子字符串。
示例
import re | |
# 使用普通字符作为分隔符 | |
text = "one1two2three3four" | |
print(re.split('\d+', text)) # 输出: ['one', 'two', 'three', 'four'] | |
# 使用正则表达式作为分隔符,忽略大小写 | |
text = "One, Two, Three, Four" | |
print(re.split(r',\s*', text, flags=re.IGNORECASE)) # 输出: ['One', 'Two', 'Three', 'Four'] | |
# 使用正则表达式分割,并限制分割次数 | |
text = "one1two2three3four" | |
print(re.split('\d+', text, maxsplit=1)) # 输出: ['one', 'two2three3four'] |
应用场景
- 文本数据清洗:在处理文本数据时,经常需要根据特定的模式(如标点符号、数字序列等)来分割字符串,以便于后续处理。
- 日志分析:在解析日志文件时,可以根据日志项之间的分隔符(如逗号、分号等)将日志分割成多个字段,以便进行进一步的分析。
- 文件路径解析:在处理文件路径时,可以使用
split()方法根据目录分隔符(如Windows的\或Unix/Linux的/)来分割路径,从而获取路径的各个组成部分。
2. sub() 方法
作用
sub() 方法用于替换字符串中所有与正则表达式匹配的部分。它允许你指定一个替换字符串或一个函数,该函数将用于生成每个匹配项的替换字符串。
语法
re.sub(pattern, repl, string, count=0, flags=0) |
- pattern:正则表达式模式。
- repl:替换字符串或函数。如果是一个字符串,则所有匹配项都将被该字符串替换。如果是一个函数,则该函数将对每个匹配项进行调用,并返回替换字符串。
- string:需要被替换的原始字符串。
- count:替换次数,默认为0,表示替换所有匹配项。如果非零,则最多替换
count次。 - flags:正则表达式标志位。
返回值
返回替换后的字符串。
示例
import re | |
# 使用字符串作为替换内容 | |
text = "apples are round, and apples are juicy." | |
print(re.sub(r'\bapples\b', 'oranges', text)) # 输出: oranges are round, and oranges are juicy. | |
# 使用函数作为替换内容 | |
def replace_func(match): | |
word = match.group() | |
if word.islower(): | |
return word.upper() | |
else: | |
return word.lower() | |
text = "Hello World, hello python." | |
print(re.sub(r'\b\w+\b', replace_func, text)) # 输出: hELLO wORLD, HELLO PYTHON. |
应用场景
- 文本内容替换:在编辑文本文件或处理用户输入时,经常需要根据特定的模式来替换字符串中的某些部分。
- 数据清洗:在数据预处理阶段,可能需要删除或替换字符串中的敏感信息、无用字符或格式错误的数据。
- 格式化输出:在生成报告或日志时,可能需要将文本中的某些部分替换为更易于阅读或符合特定格式的字符串。
3. subn() 方法
作用
subn() 方法的作用与sub()方法类似,都是用于替换字符串中所有与正则表达式匹配的部分。不同之处在于,subn()方法还会返回一个元组,其中包含替换后的字符串和一个表示替换次数的整数。
语法
re.subn(pattern, repl, string, count=0, flags=0) |
参数与sub()方法相同。
返回值
返回一个元组(new_string, num_subs),其中new_string是替换后的字符串,num_subs是替换次数。
示例
import re | |
text = "apples are round, and apples are juicy." | |
new_text, num_subs = re.subn(r'\bapples\b', 'oranges', text) | |
print(new_text) # 输出: oranges are round, and oranges are juicy. | |
print(num_subs) # 输出: 2 |
应用场景
subn()方法的应用场景与sub()方法类似,但当你需要知道实际进行了多少次替换时,subn()方法就显得特别有用。例如,在编辑文本文件时,你可能需要记录替换了多少个特定的单词或短语,以便在后续处理中使用这些信息。
总结
re模块的split(), sub(), 和 subn() 方法是Python中处理字符串的强大工具。它们通过正则表达式提供了灵活的字符串分割、替换和计数功能。在实际应用中,这些方法可以用于文本数据清洗、日志分析、文件路径解析、文本内容替换等多种场景。通过合理使用这些方法,可以大大提高字符串处理的效率和准确性。同时,由于正则表达式本身的强大功能,这些方法也支持复杂的匹配和替换逻辑,使得Python在处理文本数据方面更加灵活和强大。
相关文章:
了解`re`模块的`split()`, `sub()`, `subn()`方法的作用
在Python中,re模块(即正则表达式模块)提供了强大的字符串处理能力,允许你通过模式匹配来执行复杂的文本搜索、替换和分割等操作。其中,split(), sub(), 和 subn() 方法是re模块中非常实用的几个函数,它们各…...
机器学习交通流量预测实现方案
机器学习交通流量预测实现方案 实现方案 1. 数据预处理 2. 模型选择 3. 模型训练与评估 代码实现 代码解释 小结 🎈边走、边悟🎈迟早会好 交通流量预测是机器学习在智能交通系统中的典型应用,通常用于预测道路上的车辆流量、速度和拥…...
QNN:基于QNN+example重构之后的yolov8det部署
QNN是高通发布的神经网络推理引擎,是SNPE的升级版,其主要功能是: 完成从Pytorch/TensorFlow/Keras/Onnx等神经网络框架到高通计算平台的模型转换; 完成模型的低比特量化(int8),使其能够运行在高…...
Redis实战宝典:开发规范与最佳实践
目录标题 Key命名设计:可读性、可管理性、简介性Value设计:拒绝大key控制Key的生命周期:设定过期时间时间复杂度为O(n)的命令需要注意N的数量禁用命令:KEYS、FLUSHDB、FLUSHALL等不推荐使用事务删除大key设置合理的内存淘汰策略使…...
RPC的实现原理架构
RPC(Remote Procedure Call,远程过程调用)是一种允许程序调用位于不同地址空间或网络上的函数或方法的技术,尽管这些调用看起来像是本地调用。RPC 的实现极大地简化了分布式系统中的通信,避免了开发人员直接处理底层网…...
OpenXR Monado Hello_xr提交Frame
OpenXR Monado Hello_xr提交Frame @src/tests/hello_xr/openxr_program.cpp RenderFrame())xrWaitFrame(m_session, &frameWaitInfo, &frameState)xrBeginFrame(m_session, &frameBeginInfo)std::vector<XrCompositionLayerBaseHeader*> layers;std::vecto…...
huggingface快速下载模型及其配置
大家知道,每次进huggingface里面一个个手动下载文件然后再上传到我们的服务器是很麻烦的。其实huggingface提供了下载整个包的命令,很简单,如下: 1. 进入huggingface官网,随便搜索一个模型,点击右上角的三…...
虚幻5|不同骨骼受到不同伤害|小知识(2)
1.蓝图创建一个结构,B_BoneDamage 结构里添加一个浮点变量,表示伤害倍数 2.当我们创建了一个结构,就需要创建一个数据表格,数据表格可以选择对应的结构 不同骨骼不同倍数伤害,骨骼要对应骨骼网格体的名称 3.把我们br…...
达梦SQL 优化简介
目录 一、定位慢 SQL (一)开启跟踪日志记录 1.跟踪日志记录配置 (二)通过系统视图查看 1.SQL 记录配置 2.查询方式 二、SQL分析方法 (一)执行计划 1.概述 2.查看执行计划 (二&#x…...
题解:CF1070B Berkomnadzor
CF1070B Berkomnadzor 题解 解题思路 不难想到将 IP 地址转化为二进制后插入一个字典树中,转化后二进制的长度就是 x x x 的长度。我们需要记录每个串结尾的颜色,不妨设黑名单为 1 1 1,白名单为 0 0 0,初始时每个位置的颜色是…...
shell 学习笔记:数组
目录 1. 定义数组 2. 读取数组元素值 3. 关联数组 4. 在数组前加一个感叹号 ! 可以获取数组的所有键 5. 在数组前加一个井号 # 获取数组的长度 6. 数组初始化的时候,也可以用变量 7. 循环输出数组的方法 7.1 for循环输出 7.2 while循环输出 7.2.1 …...
计算机基础知识复习9.5
数据交换 电路交换:交换信息的两个主机之间简历专用通道,传输时延小,实时性强,效率低,无法纠正错误。 报文交换:信息拆分成小包(报文)大小无限制,有目的/源等信息提高利用率。有转…...
spark.sql
from pyspark.sql import SparkSession from pyspark.sql.functions import col, count, mean, rank, row_number, desc from pyspark.sql.window import Window from pyspark.sql.types import StructType, StructField, StringType, IntegerType# 初始化 SparkSession 对象 s…...
2024 数学建模高教社杯 国赛(A题)| “板凳龙”舞龙队 | 建模秘籍文章代码思路大全
铛铛!小秘籍来咯! 小秘籍团队独辟蹊径,运用等距螺线,多目标规划等强大工具,构建了这一题的详细解答哦! 为大家量身打造创新解决方案。小秘籍团队,始终引领着建模问题求解的风潮。 抓紧小秘籍&am…...
kaggle注册收不到验证码、插件如何下载安装
综合这三个来看, 1.插件下载用的大佬给的分享链接 2.下载好压缩包以后需要解压缩 Header Editor插件网盘下载安装教程 - 哔哩哔哩 (bilibili.com) 3.安装插件时没找到crx文件,在浏览器插件界面点击“加载解压缩的扩展” 4.复制网址到插件里ÿ…...
k8s相关技术栈
文章目录 一、k8s技术栈核心组件常见工具和服务生态系统 二、k8s服务组件控制平面组件节点组件附加组件和服务 三、k8s 常见资源核心资源扩展资源 四、系列文档其他参考 一、k8s技术栈 Kubernetes(常被简称为 K8s,其中 “K” 代表 “Kubernetes” 的首字…...
uniapp h5项目页面中使用了iframe导致浏览器返回按键无法使用, 返回不了上一页.
uniapp h5项目页面中使用了iframe导致浏览器返回按键无法使用, 返回不了上一页. 在 UniApp 中使用 iframe 加载外部页面时,可能会遇到返回键行为不符合预期的问题。这是因为 iframe 本身可以包含多个页面的历史记录,而默认情况下,浏览器的返…...
《2024网络安全十大创新方向》
网络安全是创新驱动型产业,技术创新可以有效应对新的网络安全挑战;或是通过技术创新降低人力成本投入,提升企业运营效率。为推动行业技术创新、产品创新与应用创新,数说安全发布《2024年中国网络安全十大创新方向》,涵…...
深入解析反射型 XSS 与存储型 XSS:原理、危害与防范
在网络安全领域,跨站脚本攻击(XSS)是一种常见的安全漏洞。XSS 攻击可以分为反射型 XSS 和存储型 XSS 两种类型。本文将详细介绍这两种类型的 XSS 攻击的原理、危害和防范措施。 一、反射型 XSS 1、原理 反射型 XSS 攻击也称为非持久性 XSS …...
【STM32+HAL库】---- 驱动MAX30102心率血氧传感器
硬件开发板:STM32F407VET6 软件平台:cubemaxkeilVScode1 MAX30102心率血氧传感器工作原理 MAX30102传感器是一种集成了红外光源、光电检测器和信号处理电路的高度集成传感器,主要用于心率和血氧饱和度的测量。以下是MAX30102传感器的主要特点…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...
uni-app学习笔记三十五--扩展组件的安装和使用
由于内置组件不能满足日常开发需要,uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件,需要安装才能使用。 一、安装扩展插件 安装方法: 1.访问uniapp官方文档组件部分:组件使用的入门教程 | uni-app官网 点击左侧…...
Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...
【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析
1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器(TI)推出的一款 汽车级同步降压转换器(DC-DC开关稳压器),属于高性能电源管理芯片。核心特性包括: 输入电压范围:2.95V–6V,输…...
