当前位置: 首页 > 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)


http://www.mrgr.cn/news/37392.html

相关文章:

  • Python报错已解决】 ModuleNotFoundError: No module named ‘openpyxl‘
  • 第二百五十五节 JPA教程 - JPA 多对多连接表示例
  • 数学符号练习篇-函数
  • PostgreSQL 17 发布了!非常稳定的版本
  • 今年双十一不被割韭菜!要买就要高品质好物~总结五款好物推荐!
  • HCIP——HCIA回顾
  • 26 基于STM32的智能门禁系统(指纹、蓝牙、刷卡、OLED、电机)
  • 【JavaScript】encodeURI 和 decodeURI
  • 生成速度提升70%,32K版本上新,讯飞星火API全新升级!
  • 【通知】“长三角档案数字资源长期保存与数据安全治理”专题培训
  • 【黑马软件测试一、二】软件测试基础与Linux、数据库
  • 顶象滑块、顶象验证码就这?2024-09-27 最新版(持续更新)确定不点进来看看?
  • 2万字长文助你快速入门AIGC:包含底层原理、应用场景、热门工具、行业现状…
  • 详解JavaScript中属性getter和setter
  • JVM 类加载机制2
  • 阻塞信号(`blockSignals(true)`)的作用
  • c++----继承(初阶)
  • vue项目中的node、node-sass、sass-loader之间的版本关系
  • kubernetes调度2
  • 双十一有哪些数码家电值得入手?双十一五款必入手名单大曝光