了解`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传感器的主要特点…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...
02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...
Easy Excel
Easy Excel 一、依赖引入二、基本使用1. 定义实体类(导入/导出共用)2. 写 Excel3. 读 Excel 三、常用注解说明(完整列表)四、进阶:自定义转换器(Converter) 其它自定义转换器没生效 Easy Excel在…...
python可视化:俄乌战争时间线关键节点与深层原因
俄乌战争时间线可视化分析:关键节点与深层原因 俄乌战争是21世纪欧洲最具影响力的地缘政治冲突之一,自2022年2月爆发以来已持续超过3年。 本文将通过Python可视化工具,系统分析这场战争的时间线、关键节点及其背后的深层原因,全面…...
