当前位置: 首页 > news >正文

数据科学 - 字符文本处理

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的任意对象中&#xff…...

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)&#xff…...

家庭网络的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进行相关的操作 一、先导依赖 代码如下: 二、连接成功...

PHP和Node.js哪个更爽?

先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

day52 ResNet18 CBAM

在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

JVM 内存结构 详解

内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: ​ 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...