【NLP实战】Python字符串处理
一、Python字符串基本操作
1. 去掉前后的特殊字符(strip)
Python的strip操作可以去除字符串前后的空格(不改变原串)下例将前后的空格均删掉👇
str = ' 人工智能 '
str.strip() # OUT:'人工智能'
rstrip删除右边的空格,保留左边的空格:
str.rstrip() # OUT:' 人工智能'
lstrip删除左边的空格,保留右边的空格:
str.lstrip() # OUT:'人工智能 '
strip还可以指定任意形式的字符,将字符串前后的该字符都删掉
str = 'AAA我爱人工智能AA'
str.strip('A') # OUT:'我爱人工智能'
2. 替换操作(replace)
使用replace把所有的 ’ 我 ’ 改成 ‘你’(替换全部!!):
str = '我爱人工智能,我爱深度学习'
str.replace('我','你') # OUT:'你爱人工智能,你爱深度学习'
使用replace把我替换成None,即相当于删除全部的 ‘ 我 ’:
str = '我爱人工智能,我爱深度学习'
str.replace('我','') # OUT:'爱人工智能,爱深度学习'
3. 查找操作(find操作)
find()方法语法:
str.find(str, beg=0, end=len(string))
str —— 指定检索的字符串
beg —— 开始索引,默认为0。
end —— 结束索引,默认为字符串的长度。
【如果包含子字符串返回开始的
索引值,否则返回-1。】
str = '我爱人工智能,我爱深度学习'
str.find('爱') # 返回的是第一个出现‘爱’的索引 OUT : 1
4. 判断操作 (is~~~)
isalpha: 如果字符串至少有一个字符并且所有字符都是字母或文字则返回 True,否则返回 False
str = 'a习'
str.isalpha() # OUT : True 但是在后面加个空格就是false了
str = 'a112'
str.isdigit() # OUT:False
5. 分割合并操作
str = '我爱 人工智能,我爱 深度学习'
str.split(' ') # OUT:['我爱', '人工智能,我爱', '深度学习']
上例表示将字符串,按照空格为分隔符,将字符串切分,输出是一个list结构,将分割后的每个结果作为list中的一个元素,但是原始的str仍未改变,仍然是 ‘我爱 人工智能,我爱 深度学习’ , 而非list,要想让原始的str更改为list,则需要自行赋值。
str = str.split(' ') # 现在,str是['我爱', '人工智能,我爱', '深度学习']了
下面将list中的元素进行合并, 同时指定合并时的分隔符 (join)
' '.join(str) # OUT:'我爱 人工智能,我爱 深度学习'
如果不需要分割符,只需要合并,则将指定分隔符发位置置为空即可。【置为None并不是空格】
''.join(str) # OUT : '我爱人工智能,我爱深度学习'
二、正则表达式
1. 基本介绍
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。正则表达式通常用于数据预处理时对文本进行筛选,获得我们所需要的信息,例如:只要数字、字母。

2. 正则表达式操作
(1)基本匹配操作
Python正则表达式
(1)指定好匹配的模式 —— pattern
(2)选择相应的方法 —— match, search等
(3)得到匹配结果 —— group等
re.match: # 从开始位置开始匹配,如果开头没有则无
re.search: # 搜索整个字符串
re.findall: # 搜索整个字符串,返回一个list
import re
str = '人工智能很简单 。 9abc21567k8'
pattern = re.compile(r'.')
re.findall(pattern, str)

上面表格中提到,‘.’ 可以匹配除 ‘\n’ 外的字符。因此上例中将每个字符都输出出来(list形式)。👇下例展示了可以在[ ]内指定字符进行筛选。
str = '人工智能很简单 。 9abc21567k8'
pattern = re.compile(r'[abc]')
re.findall(pattern, str) # OUT: ['a', 'b', 'c']
可以发现,当需要匹配的字符过多时,都塞在[ ]内肯定不是长久之计,因此这就体现了正则表达式的妙处。
[abc指定包含字符]
[a-zA-Z]来指定所有英文字母的大小写
[^a-zA-Z]不匹配所有的英文字母
str = '人工智能很简单 。 9abc21567k8'
pattern = re.compile(r'[a-zA-Z]')
re.findall(pattern, str) # OUT : ['a', 'b', 'c', 'k']
str = '人工智能很简单 。 9abc21567k8'
pattern = re.compile(r'[^a-zA-Z]')
re.findall(pattern, str)

(2)或方法
或方法,将两个规则并起来,以’|'连接,表示只要满足其中之一就可以匹配。
str = '人工智能很简单 。 9abc21567k8'
pattern = re.compile(r'[a-zA-Z]|[0-9]')
re.findall(pattern, str)
# OUT : ['9', 'a', 'b', 'c', '2', '1', '5', '6', '7', 'k', '8']
3. 正则常用符号

注:\w其实也包括匹配汉字,只是通常都采用英文的字符串。
# 例如:'\d'匹配数字,等价于p [0-9]
str = '人工智能很简单 。 9abc21567k8'
pattern = re.compile(r'\d')
re.findall(pattern, str) # OUT : ['9', '2', '1', '5', '6', '7', '8']
4. 特殊字符

# 0次或多次
str = '人工智能很简单 。 9abc21567k8'
pattern = re.compile(r'\d*')
re.findall(pattern, str)
# OUT : ['', '', '', '', '', '', '', '', '', '', '9', '', '', '', '21567', '', '8', '']
# 1次或多次
pattern = re.compile(r'\d+')
re.findall(pattern, str) # OUT : ['9', '21567', '8']
# 0次或1次
pattern = re.compile(r'\d?')
re.findall(pattern, str)

不仅如此,'{m}'可以精确匹配 m 次:👇
str = '人工智能很简单 。 9abc215k856'
pattern = re.compile(r'\d{3}')
re.findall(pattern, str) # OUT : ['215', '856']
'{m,n}'可以精确匹配最少 m 次, 最多n 次:👇
str = '人工智能很简单 。 9abc215k856'
pattern = re.compile(r'\d{1,3}')
re.findall(pattern, str) # OUT : ['9', '215', '856']
5. match & search
它们的返回不是一个简单的字符串列表,而是一MatchObject,可以得到更多的信息。如果匹配不成功,它们则返回一个NoneType。所以在对匹配完的结果进行操作之前,必需先判断一下是否匹配成功了。
skill:在实际任务中,通常加if判断,如果找到了,再继续,防止NoneType带来奇妙的问题
match 从字符串的开头开始匹配,如果开头位置没有匹配成功,就算失败了;而search会跳过开头,继续向后寻找是否有匹配的字符串。
input = '12人工智能很简单'
pattern = re.compile(r'\d')
match = re.match(pattern, input)
match.group() # OUT : '1'
6. 字符串的替换 & 修改
在目标字符串中规格规则查找匹配的字符串,再把它们替换成指定的字符串。你可以指定一个最多替换次数,否则将替换所有的匹配到的字符串。
sub ( rule , replace , target [,count] )
subn(rule , replace , target [,count] )
第一个参数是正则规则,第二个参数是指定的用来替换的字符串,第三个参数是目标字符串,第四个参数是最多替换次数。
sub返回一个被替换的字符串。
subn返回一个元组,第一个元素是被替换的字符串,第二个元素是一个数字,表明产生了多少次替换。
input = '123人工智能很简单'
pattern = re.compile(r'\d')
re.sub(pattern,'学习' ,input) # OUT : '学习学习学习人工智能很简单'
input = '123人工智能很简单'
pattern = re.compile(r'\d')
re.subn(pattern,'学习' ,input) # OUT : ('学习学习学习人工智能很简单', 3)
SUM: 上例表明,实际上sub和subn几乎一样,只是subn多返回了一个替换的次数。
7. 切片(split)
split切片函数。使用指定的正则规则在目标字符串中查找匹配的字符串,用它们作为分界,把字符串切片。
split( rule , target [,maxsplit])
第一个参数是正则规则,第二个参数是目标字符串,第三个参数是最多切片次数,返回一个被切完的子字符串的列表。
input = '自然语言处理123人工智能456深度学习'
pattern = re.compile(r'\d+')
re.split(pattern, input) # ['自然语言处理', '人工智能', '深度学习']
8. '(?P…)'命名组
'(?P…)'是命名组,其中,<…>里面是给这个组起的名字。
input = '自然语言处理123人工智能456深度学习'
pattern = re.compile(r'(?P<hh>\d+)(?P<uu>\D+)')
m = re.search(pattern, input)
m.group('hh') # OUT : '123'
str = 'number 863-996-785'
pattern = re.compile(r'(\d\d\d-\d\d\d-\d\d\d)')
m = re.search(pattern, str)
m.groups() # OUT : ('863-996-785',)
相关文章:
【NLP实战】Python字符串处理
一、Python字符串基本操作 1. 去掉前后的特殊字符(strip) Python的strip操作可以去除字符串前后的空格(不改变原串)下例将前后的空格均删掉👇 str 人工智能 str.strip() # OUT:人工智能rstrip删除右边的空格&a…...
17.CSS伪类
举一个简单的例子来说明什么是伪类? 从之前的代码中,如下图,我们像给这两个列表中的某一列单独设置样式,我们该如何做呢? 我们肯定会选择在li标签上添加class去实现,如下 开始标记结束标记实际元素 <…...
数据链路层
一.以太网数据链路层考虑的是相邻两个节点(通过网线/光纤、无线直接相连的两个设备)之间的传输,这里的典型协议中最知名的就是“以太网”这个协议了数据链路层,也规定了物理层的内容以太网帧格式:IP地址用来描述整个传…...
投票需要什么流程微信投票互助平台的免费投票平台搭建
“最美家政人”网络评选投票_免费小程序投票推广_小程序投票平台好处手机互联网给所有人都带来不同程度的便利,而微信已经成为国民的系统级别的应用。现在很多人都会在微信群或朋友圈里转发投票,对于运营及推广来说找一个合适的投票小程序能够提高工作效…...
数据结构——算法的时间复杂度
🌇个人主页:_麦麦_ 📚今日名言:生命中曾经有过的所有灿烂,都终究需要用寂寞来偿还。——《百年孤独》 目录 一、前言 二、正文 1.算法效率 1.1如何衡量一个算法的好坏 1.2算法的复杂度 2. 时间复杂度 2.1时间复杂度的…...
Go基础-类型
文章目录1 bool2 有符号整数3 无符号整数4 浮点数5 复数6 string7 关于类型转型1 bool bool类型有两个值,一个是true,一个是false。 测试 package mainimport "fmt"func main() {a : trueb : falsec : a && bd : a || bfmt.Println(a…...
良许翻天覆地的2022年
大家好,我是良许,新年快乐呀~ 在我女室友坚持不懈的努力之下,2022年的最后一天我终于被她传染了,阳了~ 此时的我,正顶着37多度的低烧写下这篇年终总结。 2022年,对于大多数人而言,封控是主旋…...
node+vue微信小程序的社区后勤报修系统
社区后勤报修系统小程序进行总体设计和详细设计。总体设计主要包括小程序功能设计、小程序总体结构设计、小程序数据结构设计和小程序安全设计等:详细设计主要包括社区后勤报修系统小程序数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对社区后…...
WSL(Windows Subsystem for Linux)
一、WSL优势 •传统方式:获取Linux操作系统环境,必须安装完整的虚拟机,如VMware•WSL:以非常轻量化的方式,得到Linux系统环境总结:WSL更方便,简单、好用、轻量化、省内存 二、什么是WSL ①不…...
华为OD机试题 - 单词反转(JavaScript)
最近更新的博客 华为OD机试题 - 任务总执行时长(JavaScript) 华为OD机试题 - 开放日活动(JavaScript) 华为OD机试 - 最近的点 | 备考思路,刷题要点,答疑 【新解法】 华为OD机试题 - 最小步骤数(JavaScript) 华为OD机试题 - 任务混部(JavaScript) 华为OD机试题 - N 进…...
人工智能原理复习 | 产生式系统的搜索策略
文章目录 一、回溯策略二、图搜索策略三、A 算法与 A* 算法CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 主要内容:回溯策略、图搜索策略(无信息的图搜索、启发式的图搜索)、A 算法与 A* 算法 一、回溯策略 回溯算法(BackTracking Algorithm) 实际上是一个类似枚举的搜…...
初始C语言 - 数组(一维数组、二维数组、数组越界、数组传参)
目录 一、一维数组的创建和初始化 1、数组的创建 2、 数组的初始化 3.一维数组的使用 数组通过下标来访问 总结: 1. 数组是使用下标来访问的,下标是从0开始。 2. 数组的大小可以通过计算得到。 4、一维数组在内存中的存储 二、 二维数组的创建和初始化 1.二…...
人工智能原理复习 | 可分解产生式系统的搜索策略
文章目录 一、前言二、基础知识三、AO* 算法四、博弈树搜索五、总结CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 主要内容: 与 / {/} /或图搜索、AO* 算法、极大极小过程、...
线段树(维护区间信息)
一,定义: 可以在logN时间内实现区间修改,单点修改,区间查询等操作的工具 二,思路(修改无乘法时): 1,建树 通过把区间不断二分建立一颗二叉树 我们以维护一个数组a{1…...
C语言 基于Ncurse库的贪吃蛇游戏项目
为了敲键盘及时响应,需要用到ncurse 测试代码: ncurse1.c /* ncurse1.c */ #include <curses.h> //ncurse的头文件。int main() {char c;int i 0;//ncurse界面的初始化函数。initscr(); for(i0;i<2;i){c getch();printw("\n");//…...
【Java基础】Java语言特性
认识Java java语言的执行过程 编写纯文本文件 .java 经过javac编译器(java complier)编译 .class .class是二进制的字节码 在源文件中定义几个类,就会生成几个 由JVM运行 .class JVM把字节码编译成可以在处理器上运行的高性能的本地代码(native code),…...
python进阶--Numyp库(一)
一、Numpy库介绍 NumPy(Numerical Python)是Python的⼀种开源的数值计算扩展。提供多维数组对象,各种派⽣对象(如掩码数组和矩阵),这种⼯具可⽤来存储和处理⼤型矩阵,⽐Python⾃身的嵌套列表&am…...
CV学习笔记-Inception
CV学习笔记-Inception 目录 文章目录CV学习笔记-Inception目录1. 常见的卷积神经网络2. Inception(1) Inception提出背景(2) Inception module 核心思想3. Inception的历史版本(1) InceptionV1-GoogleNet(2) InceptionV2(3) InceptionV3(4) Inception V44. Inception模型的特点…...
注意力机制笔记——结合沐神和B站老弓up主
B站【大白话浅谈【注意力机制】】 聚类 是针对 样本, 注意力机制是针对样本相关性,来进行计算的 自注意力机制 指的是 query ,key,value都是同一个部分。 可以学到 类似的 短语 ,和 语义特征。如its 指代的对象。 评论区大佬 根据这篇论文《Effective Approaches to…...
建议收藏,轻松搞懂区块链
未来已来,只是不均衡地分布在当下 大家好,我是菜农,欢迎来到我的频道。 本文共 5844字,预计阅读 30 分钟 区块链是近些年来最热门的前沿技术,被认为是未来十几年对金融、物联网、医疗等诸多领域产生最大影响的"…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
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": …...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
