数据清洗之字符串操作和正则表达式

【Python自动化Excel】Python与pandas字符串操作 Python之所以能够成为流行的数据分析语言,有一部分原因在于其简洁易用的字符串处理能力。 Python的字符串对象封装了很多开箱即用的内置方法,处理单个字符串时十分方便;对于Excel、csv等表格文件中整列的批量字符串操作,pandas库也提供了简洁高效的处理函数,几乎与内置字符串函数一一对应。也就是说: 单个字符串处理,用Python内置的字符串方法; 表格整列的字符串处理,用pandas库中的字符串函数; 本文就以常用的数据处理需求,来对比使用以上两种方式的异同,从而加深对P. 阅读详情

一、字符串对象方法

1. split()函数

split()函数可以将一个字符串分裂成多个字符串组成的列表:

a = 'hello world'
a.split(' ')  # 将字符串a以' ' 进行拆分

输出结果:

['hello', 'world']

2. strip()函数

strip() 函数用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列:

a = '  hello world '
a.strip() # 删除字符串a头尾的空格

输出结果:

'hello world'
a = 'abahello worldaaa'
a.strip('a') # 删除字符串a头尾的字符a

输出结果:

'bahello world'

3. join()函数

join() 函数用于将序列(列表、元组等)中的元素以指定的字符连接生成一个新的字符串:

' '.join(['hello', 'world'])

输出结果:

'hello world'

4. 其它函数

在这里插入图片描述

二、正则表达式

1. 正则表达式简介

正则表达式提供了一种在文本中灵活查找或匹配字符串(通常是复杂的字符串)模式的方法,目的是为了字符串模式匹配,从而实现搜索和替换功能。

正则表达式的基本组成元素可以分为:字符和元字符。字符很好理解,就是基础的计算机字符编码,通常正则表达式里面使用的就是数字、英文字母。而元字符,也被称为特殊字符,是一些用来表示特殊语义的字符。如^表示非,|表示或等。利用这些元字符,才能构造出强大的表达式模式(pattern)。

详见正则表达式不要背

正则可视化工具1
正则可视化工具2
正则在线调试工具

2. 字符

2.1 一对一

最简单的正则表达式可以由简单的数字和字母组成,没有特殊的语义,纯粹就是一一对应的关系。如想在’apple’这个单词里找到‘a’这个字符,就直接用a这个正则就可以了。
在这里插入图片描述

但是如果想要匹配特殊字符的话,就要使用元字符\, 它是转义字符字符,顾名思义,就是让其后续的字符失去其本来的含义。比如要匹配* 这个符号,由于 * 这个符号本身是个特殊字符,所以我要利用转义元字符\来让它失去其本来的含义,即\*:
在这里插入图片描述
其它特殊字符和对应的正则表达式:
在这里插入图片描述

2.2 一对多

用集合区间和通配符可以实现一对多的匹配。

在正则表达式里,集合的定义方式是使用中括号[ ]。如[123]这个正则就能同时匹配1,2,3三个字符。

元字符-就可以用来表示区间范围,利用[0-9]就能匹配所有的数字, [a-z]则可以匹配所有的英文小写字母。

同时匹配多个字符的简便正则表达式:
在这里插入图片描述

举例:
在这里插入图片描述

3. 循环和重复

要实现多个字符的匹配,只要多次循环,重复使用一对一和一对多的正则规则就可以了。根据循环次数的多与少,我们可以分为0次,1次,多次,特定次。
在这里插入图片描述

4. 位置边界

在长文本字符串查找过程中,我们常常需要限制查询的位置。

4.1 单词边界

单词是构成句子和文章的基本单位,一个常见的使用场景是把文章或句子中的特定单词找出来。比如找出下面句子中的单词cat:

The cat scattered his food all over the room.

如果直接使用表达式cat,会同时匹配到cat和scattered这两处文本。这时候我们就需要使用边界正则表达式\b,它匹配单词的开始或结束,即\bcat\b:
在这里插入图片描述

4.2 字符串边界

在匹配字符串的边界时,元字符^用来匹配字符串的开头,元字符$用来匹配字符串的末尾。

5. 修饰符

正则表达式常用的修饰符:
在这里插入图片描述
详见正则表达式 - 修饰符

6. 子表达式

从简单到复杂的正则表达式演变通常要采用分组、回溯引用和逻辑处理的思想。利用这三种规则,可以推演出无限复杂的正则表达式。

6.1 分组

分组就是指以(和)元字符所包含的正则表达式,每一个分组都是一个子表达式,是构成高级正则表达式的基础。如果只是使用简单的()匹配语法,本质上和不分组是一样的,如果要发挥它强大的作用,往往要结合回溯引用的方式。

6.2 回溯引用

所谓回溯引用(backreference)指的是模式的后面部分引用前面已经匹配到的子字符串。你可以把它想象成是变量,回溯引用的语法像\1,\2,…,其中\1表示引用第一个子表达式,\2表示引用第二个子表达式,以此类推。而\0则表示整个表达式。

比如现在要在下面这个文本里匹配两个连续相同的单词:

Hello what what is the first thing, and I am am scq000.

在这里插入图片描述

其中,\b表示单词的开始,(\w+)匹配一个单词,\s则是匹配空白字符,\1就是引用第一个子表达式,即(\w+)。

6.3 非捕获正则

如果我们不想子表达式被引用,可以使用非捕获正则,即(?:regex),这样就可以避免浪费内存。regex为正则表达式。

6.4 前向查找

前向查找(lookahead)是用来限制后缀的。凡是以(?=regex)包含的子表达式,在匹配过程中,都会匹配regex表达式的前面内容,不返回本身。

比如要取到下面的阅读数,就可以用\d+(?=</span>)来匹配:

<span class=\"read-count\">阅读数:641</span>

在这里插入图片描述

6.5 后向查找

语法为(?<=regex),匹配regex表达式的后面的内容,不返回本身。

比如apple和people都包含ple这个后缀,但如果只想找到apple的ple,就可以通过限制ap这个前缀,来唯一确定ple这个单词了。

在这里插入图片描述

7. 与 或 非

只有在[和]内部使用的^才表示非的关系。

在这里插入图片描述

8. 运算符优先级

正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。

相同优先级的从左到右进行运算,不同优先级的运算先高后低。下表从最高到最低说明了各种正则表达式运算符的优先级顺序:

在这里插入图片描述

9. 常用正则表达式

常用正则表达式1

常用正则表达式2

三、re库

Python内建的re模块是用于将正则表达式应用到字符串上的库。

re模块主要有三个主题:匹配、替代、拆分。

假设我们想将含有多种空白字符(制表符、空格、换行符)的字符串拆分开:

text = 'hello world\t hello\nworld'
re.split('\s+', text)

输出结果:

['hello', 'world', 'hello', 'world']

在调用re.split('\s+', text)时,正则表达式首先会被编译,然后正则表达式的split方法在传入文本上被调用。也可以使用re.compile自行编译,形成一个可复用的正则表达式对象:

text = 'hello world\t hello\nworld'
regex = re.compile('\s+')
regex.split(text)

输出结果:

['hello', 'world', 'hello', 'world']

为了在正则表达式中避免转义符\的影响,可以使用原生字符串语法,比如r'C:\x'或者用等价的’C:\\x'

findall方法可用于获得所有匹配正则表达式的模式的列表:

text = 'hello world\t hello\nworld'
regex = re.compile('\s+')
regex.findall(text)

输出结果:

[' ', '\t ', '\n']

findall返回的是字符串中所有的匹配项,而search返回的仅仅是第一个匹配项。match更为严格,它只在字符串的起始位置进行匹配:

在这里插入图片描述

3.11 向量化字符串操作 3.11 向量化字符串操作 使用 Python 的一个优势就是字符串处理起来比较容易。在此基础上创建的 Pandas 同样提供了一系列向量化字符串操作(vectorized string operation),它们都是在处理(清洗)现实工作中的数据时不可或缺的功能。在这一节中,我们将介绍 Pandas 的字符串操作,学习如何用它们对一个从网络采集来的杂乱无章的数据集进行局部清理。 3.11.1... 阅读详情

相关推荐

Pandas学习笔记九——向量化字符串操作

向量化字符串操作 使用pyhton的一个优势就是字符串处理起来比较容易。在此基础上创建的pandas同样提供了一系列向量化字符串操作,他们都是在处理(清理)现实工作中的数据时不可或缺的功能。向量化操作简化了纯数值的数组操作语法——我们不需要再担心数组的长度或维度,只需要关心需要的操作。然而,由于numpy并没有为字符串数组提供简单的接口,因此需要通过频繁的for循环(列表生成式)来解决问题。 ...

Little Garden 3303

数据治理 | 数据清洗必备 — 正则表达式

本文将在 Python 语法的基础上,介绍编程界大名鼎鼎的文本处理工具——正则表达式。一般在做数据清洗和数据处理时,基本的Python语法是不够用的,我们必须借助一些Python标准库和第三方库来作为数据清洗的辅助工具,包括但不限于re库、Numpy库 和 Pandas库。本文主要介绍 Python 正则表达式标准库——re。

weixin_55633225的博客 1190

[Python3] Pandas v1.0 —— (七) 向量化字符串操作

文章目录十、向量化字符串操作Pandas字符串方法列表1. 与Python字符串方法相似的方法2. 使用正则表达式的方法3. 其他字符串方法 十、向量化字符串操作 Pandas提供一系列向量化字符串操作(vectorized string operation)是在处理(清洗)现实工作中的数据时不可或缺的功能。 Pandas字符串方法列表 1. 与Python字符串方法相似的方法 返回字符串Series[Series or Index of object]: 方法 参数 描述 lower()

進撃の算法 1512

数据清洗和处理--正则表达式

        我们日常工作中经常会处理一些不规范的数据,通过正则表达式可以很轻易的匹配出需要的信息,快速过滤数据。基于正则表达式可以制作海量数据清洗系统,网络爬虫,网络日志数据分析,表单验证等。        正则表达式简化了我们的代码量,比如提取公式中的单元格区域和函数名,若用代码写会非常繁琐,而正则表达式只有一行字符串。  

thinkersky123的博客 2440

MATLAB语言的字符串处理

本文详细探讨了MATLAB中的字符串处理能力,包括字符串的创建、基本操作、比较、查找、正则表达式、大字符数组与字符串数组之间的区别以及实际应用案例。通过对这些内容的理解和掌握,可以更有效地在MATLAB中进行文本数据的处理与分析,为开发高效、可靠的编程方案提供支持。随着数据驱动时代的到来,字符串处理将会在数据分析、自然语言处理等领域发挥越来越重要的作用,掌握MATLAB中的字符串处理技巧,对于研究和工作都有很大的帮助。希望本文能为读者提供一些有益的参考和指导。

2501_90468155的博客 818

Python高频面试题 - 什么是尾递归,Py如何实现 + MRO + 断言 + lambda + dir

Python高频面试题 - 什么是尾递归,Py如何实现 + MRO + 断言 + lambda + dir

孤寒者的博客 2万+

【Python网络爬虫】python爬虫用正则表达式进行数据清洗与处理

在Python网络爬虫的数据清洗与处理过程中,正则表达式是一个非常强大的工具,它可以帮助我们从复杂的文本数据中提取出所需的信息。在Python中,re模块提供了对正则表达式的支持。

左手の明天的博客 1969

Python编程实例-正则表达式在数据清洗中的使用技巧

如果你是一名Linux或Mac用户,你可能已经在命令行中使用过grep通过匹配模式来搜索文件。正则表达式(regex)允许你根据模式搜索、匹配和操作文本。这使得它们成为文本处理和数据清洗的强大工具。

视觉与物联智能 960

Python数据清洗——字符串操作

常用的数据清洗方法有:字符串操作、正则表达式和第三方库。 常用数据清洗的字符串操作有截取、替换、查找和分割。 截取:str[开始位置 : 结束位置 : 间隔位置] #默认开始位置为0# 替换:str.replace('被替换的内容','替换后的内容') #replace()方法替换字符串后仅为临时变量,需重新赋值才能保存# 查找:str.find('要查找的内容',[开始位置,结...

Welcome To Westworld 1800

pandas由入门到精通-数据清洗-字符串处理

文中用S代指Series,用Df代指DataFrame数据清洗是处理大型复杂情况数据必不可少的步骤,这里总结一些数据清洗的常用方法:包括缺失值、重复值、异常值处理,数据类型统计,分箱,随机采样,向量化编码等方法。每种方法都给出了代码和实例,并用表格进行总结。

qq_48081868的博客 494

AI+AB测试提升电商主图点击率实战指南

在电商运营中,主图点击率(CTR)是衡量商品吸引力的核心指标,直接影响转化率和订单增长。通过AI技术批量生成高质量主图素材,结合数据驱动的AB测试方法,可以显著提升点击率。AI工具如MidJourney和Stable Diffusion能够快速生成多样化视觉方案,而自动化处理流水线则确保素材规格统一。AB测试体系通过多维变量控制和流量分配策略,科学验证不同素材效果。这种方法特别适用于需要快速迭代的电商场景,某女装店铺案例显示CTR从1.2%提升至3.8%,验证了AI+数据协同优化的技术价值。

weixin_29058331的博客 298

Pandas6(数据清洗2)——置换和随机采样、get_dummies、扩展数据类型、字符串处理函数

本文介绍了数据清洗中的四个关键操作: 置换和随机采样 - 使用permutation打乱数据顺序,sample进行随机抽样,支持有放回/无放回抽样和权重设置 分类编码 - get_dummies函数实现独热编码,将分类变量转为数值形式,支持前缀设置和缺失值处理 扩展数据类型 - 介绍Pandas的Int8Dtype、BooleanDtype等扩展类型,解决Numpy数据类型在缺失值处理等方面的问题 正则表达式 - 使用re模块进行字符串模式匹配、替换和拆分,compile方法可将正则表达式编译为可重用对象

weixin_56449709的博客 1006

数字电子时钟——数字电路课设

本文设计了一种基于中小规模集成电路的数字电子时钟系统,采用模块化设计方法,包含晶振电路(CD4060+D触发器)、计时电路(74HC161计数器)、数码管驱动(CD4511)和整点报时功能。系统实现了60进制秒/分、24进制小时、7进制星期的计时显示,支持手动校时功能,并具备整点报时特性(59分54-58秒5次500Hz低音,59秒1次1000Hz高音)。通过分模块调试与整合,最终实物电路满足设计要求,获得优秀评价。

来自FZU——电子科学与技术专业 1487

python数据清洗例子_python数据清洗系列之字符串处理详解

前言数据清洗是一项复杂且繁琐(kubi)的工作,同时也是整个数据分析过程中最为重要的环节。有人说一个分析项目80%的时间都是在清洗数据,这听起来有些匪夷所思,但在实际的工作中确实如此。数据清洗的目的有两个,第一是通过清洗让数据可用。第二是让数据变的更适合进行后续的分析工作。换句话说就是有”脏”数据要洗,干净的数据也要洗。在数据分析中,特别是文本分析中,字符处理需要耗费极大的精力,因而了解字符处理对...

weixin_39627665的博客 163

agent-browser OpenClaw 的最佳搭档

agent-browser 是专为 AI Agent 设计的浏览器自动化工具,目前被公认为 OpenClaw 的最佳配套方案。这份技术文档完整记录了其架构、协议、性能调优与常见问题处理,非常适合想让OpenClaw 真正“上手”互联网的开发者与老用户。

liu_zhiyi的博客 1780

双屏DPI缩放问题全解析:从原理到实战解决窗口大小突变

DPI(每英寸点数)缩放是现代操作系统在多显示器环境下实现界面适配的核心技术。其原理是通过虚拟分辨率映射,在不同物理像素密度的屏幕上维持一致的视觉尺寸。这项技术的价值在于解决了高分辨率屏幕显示内容过小的问题,保障了跨屏工作流的视觉连续性。然而,在混合DPI环境(如4K屏与1080p屏组合)中,显卡驱动逻辑与应用程序DPI感知的协同问题,常导致窗口跨屏时出现剧烈缩放、尺寸错乱。这直接影响多屏办公、设计协作等需要频繁拖拽窗口的应用场景。本文聚焦于**显卡驱动**配置与**应用程序兼容性**设置,提供一套从系统底

weixin_34364071的博客 386

数据清洗

字符串操作 清洗数据有三种常用的方法:字符串操作、正则表达式和第三方模块库。 用于清洗数据的字符串操作:截取、替换、查找和分割。 #1. 截取:字符串[开始位置:结束位置:间隔位置] #默认从0开始,空值默认取到字符串尾部。间隔位置默认为1 str = 'ABCDEFG' #间隔为负数,开始位置为最后一个,结束位置到字符串首部 print('与原字符串顺序相反的字符串:' + str[::-1])...

低到尘埃,仰望星空 9181

OpenCV 常用的API总结(迅速查询)

OpenCV基本操作 openCV安装 读取图片(IO操作) 绘制集合图形 图像加法以及混合操作 OpenCV图像处理 图像几何变换 形态学操作 图像平滑 直方图 边缘检测 模板匹配 傅里叶变换 轮廓检测 图像分割 图像特征提取 SIFT检测关键点 视频读写............

Peyzhang的博客 3935

python洗字_python数据清洗系列之字符串处理详解

前言数据清洗是一项复杂且繁琐(kubi)的工作,同时也是整个数据分析过程中最为重要的环节。有人说一个分析项目80%的时间都是在清洗数据,这听起来有些匪夷所思,但在实际的工作中确实如此。数据清洗的目的有两个,第一是通过清洗让数据可用。第二是让数据变的更适合进行后续的分析工作。换句话说就是有”脏”数据要洗,干净的数据也要洗。在数据分析中,特别是文本分析中,字符处理需要耗费极大的精力,因而了解字符处理对...

weixin_30639241的博客 383

别再用RIDE了!VSCode+RobotFramework插件打造现代化测试开发环境

本文介绍了如何利用VSCode和RobotFramework插件构建现代化的测试开发环境,替代老旧的RIDE工具。详细讲解了环境配置、插件安装、智能代码补全、测试运行与调试等核心功能,帮助开发者提升自动化测试效率。文章还提供了高级技巧、最佳实践和常见问题解决方案,助力团队实现平滑迁移。

weixin_28829629的博客 480

把个人化的 SQVI 报表变成可维护、可共享、可传输的 ABAP Query:从定位来源到转换落地的完整路线图

本文针对SAP系统中业务用户常用但难以维护的SQVI临时报表问题,提供了一套完整的解决方案。文章首先区分了SQVI(个人临时报表)和ABAP Query(团队可维护报表)的关键差异,重点介绍了如何通过函数模块RSAQ_DECODE_REPORT_NAME反查报表来源。对于SQVI报表,详细说明了定位创建人和转换为团队可维护的ABAP Query的具体步骤,包括Query Area切换、转换操作和后续维护方法。最后总结了常见问题的解决方案,如字段调整、口径固化和生成程序名反查等,为现场实施提供了可直接操作的完

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 302

12.Pandas向量化字符串操作

文章目录Pandas向量化字符串操作Pandas字符串操作简介Pandas字符串属性方法列表Pandas字符串的正则表达式Pandas其他字符串方法 Pandas向量化字符串操作 Python内置了字符串对象,并且具有一系列内置的强大方法,这让Python处理字符串变得非常容易,在此基础上创建的Pandas同样提供了一系列向量化字符串操作(vectorized string operation) 这些都是处理(清洗)现实工作中的数据时不可或缺的功能.在这一节中,我们将介绍Pandas的字符串操作 Pand

鸿神的博客 943

2024年CSP-X复赛真题题解(T1:购物)

2024年CSP-X复赛真题题解(T1:购物)

王老师青少年编程 1179

python数据字符_python数据清洗系列之字符串处理详解

数据清洗是一项复杂且繁琐(kubi)的工作,同时也是整个数据分析过程中最为重要的环节。有人说一个分析项目80%的时间都是在清洗数据,这听起来有些匪夷所思,但在实际的工作中确实如此。数据清洗的目的有两个,第一是通过清洗让数据可用。第二是让数据变的更适合进行后续的分析工作。换句话说就是有”脏”数据要洗,干净的数据也要洗。在数据分析中,特别是文本分析中,字符处理需要耗费极大的精力,因而了解字符处理对于数...

weixin_39914049的博客 117

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Pandas使用教程 - 字符串操作与处理

对于一些更复杂的字符串处理任务,Pandas 的向量化方法可能无法满足需求,此时可以结合 apply() 和自定义函数实现个性化操作。清除所有标点符号;将多个连续空格替换为单个空格;提取所有单词并返回列表。import re# 移除所有标点符号# 将多个连续空格替换为单个空格# 去除首尾空格# 分词df_comments["word_list"] = df_comments["评论"].apply(clean_comment)print("应用自定义函数后的单词列表:")

闲人编程的博客 1325

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

大量的数据做字符串匹配_《利用Python进行数据分析》七章·数据清洗和准备·学习笔记(三·完)...

一、数据清洗和准备 在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载、清理、转换以及重塑。这些工作会占到分析师时间的80%或更多。有时,存储在文件和数据库中的数据的格式不适合某个特定的任务。许多研究者都选择使用通用编程语言对数据格式进行专门处理,pandas和内置的Python标准库提供了一组高级的工具,可以让你轻松地将数据规整为想要的格式。二、实例2.10 字符串操作Python能够...

weixin_39634067的博客 324

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: 数据处理之数据转换
下一篇: pandas之合并数据集
米法·
博客等级 码龄8年 179粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值