数据科学 - 字符文本处理
1. 字符串的基本操作
1.1 结构操作
1.1.1 拼接
• 字符串之间拼接
字符串之间的拼接使用'+'进行字符串的拼接
a = 'World'
b = 'Hello'
print(b + ' ' +a)
• 列表中的字符串拼接
将以分隔符‘,’为例子
str = ['apple','banana']
print(','.join(str));
• 字符串中选择
通过索引进行切片操作
str1 = 'HelloWorld'# 从索引 1 到索引 4 (不包括 4)
print(str1[1:4]) # 输出: ell# 从索引 0 开始,每隔一个字符取一次
print(str1[0::2]) # 输出: Hlool# 反转字符串
print(str1[::-1]) # 输出: dlroWolleH
1.1.2 大小写转换
注意,字符串的大小写转换是一个内置于str中的方法,所以使用str.function()的形式声明
str = 'World'
print(str.upper()) #转换为大写
print(str.lower()) #转换为小写
print(str.capitalize()) #首字母大写
1.1.3 去除空白
通过strip函数将字符串周边的空白部分自定义去除
str2 = ' Hello World '
print(str2.strip())
print(str2.lstrip()) #去除左边的空格,去除右边空格使用rstrip
1.2 字符串的分割与合并
• 分割字符串以列表的形式
a = 'apple,banana'
fruits = a.split(',')
使用','进行分割,最终返回
['apple','banana']
• 合并列表为字符串形式
将以分隔符‘,’为例子
str = ['apple','banana']
print(','.join(str));
1.3 格式化
常见的格式化有两种
• format形式
根据format()之后的顺序依次填充进入{}
name = "John"
age = 30
info = "My name is {} and I am {} years old".format(name, age)
print(info) # 输出: My name is John and I am 30 years old
• f{}形式
这种方法更加自定义化,不用考虑填充顺序,将变量置入即可
name = 'Ricardo'
age = 18
print(f"Hello, I'm {name}, my age is {age}")
1.4 字符串检测
| startswidth | 判断末尾位置是否满足条件 |
| endswith | 判断起始位置是否满足 |
| isalpha | 判断是否为字符组成 |
| isdigit | 判断是否由数值组成 |
str1 = 'HelloWorld'
print(str1.startswith('Hello')) # 输出: True
print(str1.endswith('World')) # 输出: True
print(str1.isalpha()) # 输出: Truestr2 = '12345'
print(str2.isdigit()) # 输出: True
2. Re中使用正则表达式
re 模块是 Python 中处理正则表达式的标准库,用于字符串的复杂模式匹配、搜索、替换等操作。通过正则表达式,你可以轻松实现复杂的文本处理需求,如验证输入、查找特定模式、替换文本等。
import re
2.1 常用函数
• re.match()
从字符串的起始位置开始匹配。如果匹配成功,返回 Match 对象,字符串形式;否则返回 None
import retext = "hello world"
match = re.match(r'hello', text)
if match:print("Match found:", match.group()) # 输出: Match found: hello
• re.search()
search扫描整个字符串,返回第一个匹配项
import retext = "hello world"
search = re.search(r'world', text)
if search:print("Search found:", search.group()) # 输出: Search found: world
• re.findall()
findall返回所有的匹配项,以列表的形式
import retext = "The rain in Spain falls mainly in the plain"
matches = re.findall(r'in', text)
print("All matches:", matches) # 输出: All matches: ['in', 'in', 'in', 'in']
• re.sub()
sub替换文本匹配内容
import re
text = 'The winter is so hot'matches = re.sub(r'winter','summer',text)
print(matches) #返回替换后的整体文本
• re.split()
与前文所述的split用法相同,将字符串进行分割,返回列表形式
import retext = "apple, banana, cherry"
split_result = re.split(r', ', text)
print(split_result) # 输出: ['apple', 'banana', 'cherry']
2.2 Match对象
| group() | 返回匹配的字符串 |
| start() | 返回匹配的开始位置 |
| end() | 返回匹配的结束位置 |
| span() | 返回匹配的开始与结束为止,元组的形式返回 |
import retext = "hello world"
match = re.search(r'world', text)
if match:print("Matched text:", match.group()) # 输出: Matched text: worldprint("Start position:", match.start()) # 输出: Start position: 6print("End position:", match.end()) # 输出: End position: 11print("Span:", match.span()) # 输出: Span: (6, 11)
相关文章:
数据科学 - 字符文本处理
1. 字符串的基本操作 1.1 结构操作 1.1.1 拼接 • 字符串之间拼接 字符串之间的拼接使用进行字符串的拼接 a World b Hello print(b a) • 列表中的字符串拼接 将以分隔符‘,’为例子 str [apple,banana] print(,.join(str)); • 字符串中选择 通过索引进行切片操…...
python之装饰器、迭代器、生成器
装饰器 什么是装饰器? 用来装饰其他函数,即为其他函数添加特定功能的函数。 装饰器的两个基本原则: 装饰器不能修改被装饰函数的源码 装饰器不能修改被装饰函数的调用方式 什么是可迭代对象? 在python的任意对象中ÿ…...
Go语言实现后台管理系统如何根据角色来动态显示栏目
实现要点 根据不同的用户显示不同的栏目是后台管理的重要内容,那么如何实现这些功能呢? 栏目有很多分级这些需要递归查出来新增和删除也要满足层级规则且不影响其他层级各节点之间的关系因该明确,方便添加和删除数据库设置 存储栏目的数据库设计,要明确节点的关系最常用的…...
【深度学习】【TensorRT】【C++】模型转化、环境搭建以及模型部署的详细教程
【深度学习】【TensorRT】【C】模型转化、环境搭建以及模型部署的详细教程 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【TensorRT】【C】模型转化、环境搭建以及模型部署的详细教程前言模型转换--pytorch转engineWindows平台搭…...
LeetCode(Python)-贪心算法
文章目录 买卖股票的最佳时机问题穷举解法贪心解法 物流站的选址(一)穷举算法贪心算法 物流站的选址(二)回合制游戏快速包装 买卖股票的最佳时机问题 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你…...
【C/C++】【基础数论】33、算数基本定理
算术基本定理,又称正整数的唯一分解定理。 说起来比较复杂,但是看一下案例就非常清楚了 任何一个大于 1 的正整数都可以唯一地分解成有限个质数的乘积形式,且这些质数按照从小到大的顺序排列,其指数也是唯一确定的。 例如&#…...
聚簇索引与非聚簇索引
物理存储方式不同: 1. InnoDb默认数据结构是聚簇索引;MyISAM 是非聚簇索引 2. 聚簇索引 中表索引与数据是在一个文件中 .ibd;非聚簇索引中表索引(.MYI)与数据(.MYD)是在两个文件中 3. 聚簇索引中表数据行都存放在索引树…...
“类型名称”在Go语言规范中的演变
Go语言规范(The Go Programming Language Specification)[1]是Go语言的核心文档,定义了该语言的语法、类型系统和运行时行为。Go语言规范的存在使得开发者在实现Go编译器时可以依赖一致的标准,它确保了语言的稳定性和一致性&#…...
c++----继承(初阶)
大家好呀,今天我们也是多久没有更新博客了,今天来讲讲我们c加加中的一个比较重要的知识点继承。首先关于继承呢,大家从字面意思看,是不是像我们平常日常生活中很容易出现的,比如说电视剧里面什么富豪啊,去了…...
数据库系列(1)常见的四种非关系型数据库(NoSQL)
非关系型数据库(NoSQL) 非关系型数据库适用于需要灵活数据模型和高可扩展性的场景。常见的非关系型数据库包括: MongoDB:文档数据库,以JSON-like格式存储数据,适合快速开发和迭代。Cassandra:…...
大规模预训练语言模型的参数高效微调
人工智能咨询培训老师叶梓 转载标明出处 大规模预训练语言模型(PLMs)在特定下游任务上的微调和存储成本极高,这限制了它们在实际应用中的可行性。为了解决这一问题,来自清华大学和北京人工智能研究院的研究团队探索了一种优化模型…...
一场大模型面试,三个小时,被撞飞了
去华为面试大模型,一点半去五点半回,已经毫无力气。 1️⃣一轮面试—1小时 因为一面都是各个业务的主管,所以专业性很强,面试官经验很丰富,建议大家还是需要十分熟悉所学内容,我勉强通过一面。 2️⃣二轮…...
Python每次for循环向list中添加多个元素
Python中,我每次for loop要产生几个结果。要将这些结果加到一个list中。怎么最高效? 答: list extend 方法 在Python中,如果你想在循环中将多个元素添加到列表中,最直接和最高效的方式是使用列表的 append() 方法。每次循环时&a…...
Java爬虫抓取数据的艺术
在信息时代,数据的重要性不言而喻。对于Java开发者来说,掌握如何使用Java进行数据抓取是一项宝贵的技能。通过编写爬虫程序,我们可以从互联网的海量信息中提取有价值的数据,用于市场分析、客户洞察、内容监控等多种场景。本文将介…...
Unity场景内画车道线(根据五阶曲线系数)
之前做过使用Dreamteck Splines插件构建车道线之前需求是给定车道线的点位,根据点位来进行构建。 由于AI识别出来的点位不线性,画出来的车道线经常是歪七扭八,所以使用五阶曲线系数进行构建。 使用在线图形计算器进行测试构建,公式…...
IPLOOK百万级用户容量核心网惊艳亮相北京PT展
2024年9月25日,以“推动数实深度融合,共筑新质生产力”为主题,本届中国国际信息通信展(PT展)在北京国家会议中心正式拉开帷幕。 广州爱浦路网络技术有限公司(简称:IPLOOK)ÿ…...
家庭网络的ip安全性高吗
家庭网络的IP安全性是一个重要的话题,涉及到如何保护家庭设备和用户的隐私。家庭网络的安全性既有其优势,也存在一些潜在的风险。以下是关于家庭网络IP安全性的几个关键点: 1. 家庭网络的优势 私有IP地址的使用 家庭网络中的设备通常使用私…...
LLM阅读推荐
(按名称排序) 【徹底解説】これからのエンジニアの必携スキル、プロンプトエンジニアリングの手引「Prompt Engineering Guide」を読んでまとめてみた(opens in a new tab)3 Principles for prompt engineering with GPT-3(opens in a new tab)A beginn…...
计算机网络笔记001
讲义 1.计算机网络的定义 定义: 一批独立自治的计算机系统的互连集合体 说明: 独立自治的计算机系统, 互连的手段是各种各样的, 依据协议进行 工作 2.计算机网络和通信网络 通信网络: 重点研究通…...
如何用IDEA连接HBase
编写java代码,远程连接HBase进行相关的操作 一、先导依赖 代码如下: 二、连接成功...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
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样…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
