字符串篇(四)

文章目录

  • 1.26 ljust()函数
  • 1.27 lower()函数
  • 1.28 lstrip()函数
  • 1.29 maketrans()函数
  • 1.30 partition()函数
  • 1.31 replace()函数
  • 1.32 rfind()函数
  • 1.33 rindex()函数

1.26 ljust()函数

ljust() 是 Python 中字符串(str)对象的一个方法,用于将字符串左对齐,并使用指定的填充字符(默认为空格)将其填充到指定的宽度。如果指定的宽度小于或等于字符串的长度,则字符串将保持不变。如果指定的宽度大于字符串的长度,则会在字符串的右侧添加填充字符,直到达到指定的宽度。

下面是 ljust() 方法的语法:

str.ljust(width[, fillchar])
  • width:指定填充后字符串的总宽度。
  • fillchar:可选参数,指定用于填充的字符,默认为空格。

下面是如何使用 ljust() 方法的例子:

# 创建一个字符串
s = "hello"# 使用空格将字符串填充到宽度为10
padded_s = s.ljust(10)
print(padded_s)  # 输出: 'hello     '# 使用特定字符将字符串填充到宽度为10
padded_s_with_dash = s.ljust(10, '-')
print(padded_s_with_dash)  # 输出: 'hello-----'# 如果指定的宽度小于或等于字符串的长度,字符串将保持不变
s_unchanged = s.ljust(4)
print(s_unchanged)  # 输出: 'hello'

在上面的例子中,ljust() 方法被用来将字符串 “hello” 左对齐,并使用空格或指定的字符(在这个例子中是短横线 ‘-’)将其填充到指定的宽度。第一个例子中,字符串被填充到宽度为 10,使用空格作为填充字符。第二个例子中,同样填充到宽度为 10,但使用短横线作为填充字符。最后一个例子中,由于指定的宽度小于字符串的长度,所以字符串保持不变。

这个方法在处理需要格式化文本输出的场景时非常有用,比如创建表格、对齐文本列等。

1.27 lower()函数

lower() 是 Python 中字符串(str)对象的一个方法,用于将字符串中的所有大写字母转换为小写字母。这个方法返回一个新的字符串,其中所有的大写字母都被转换为对应的小写字母,而原字符串本身不会被修改。

下面是如何使用 lower() 方法的例子:

# 创建一个包含大写和小写字母的字符串
s = "Hello, World!"# 使用 lower() 方法将字符串转换为全小写
lowercase_s = s.lower()print(lowercase_s)  # 输出: 'hello, world!'# 原字符串不会被修改
print(s)  # 输出: 'Hello, World!'# 对于只包含小写字母的字符串,lower() 方法不会产生变化
s_already_lower = "already lowercase"
print(s_already_lower.lower())  # 输出: 'already lowercase'# 对于包含非字母字符的字符串,lower() 只转换字母
s_with_numbers = "Hello123"
print(s_with_numbers.lower())  # 输出: 'hello123'

lower() 方法在处理文本数据,特别是需要进行不区分大小写的比较或搜索时,非常有用。例如,当你想检查一个字符串是否包含特定的子串,而不关心子串的大小写时,可以先将两个字符串都转换为小写(或大写),然后再进行比较。

这个方法在处理文本文件、用户输入或从网络接收的数据时尤其有用,因为这些数据可能包含不同的大小写格式。使用 lower() 方法可以确保数据在比较或处理时具有一致的大小写格式。

1.28 lstrip()函数

lstrip() 是 Python 中字符串(str)对象的一个方法,用于移除字符串左侧(开头)的空白字符(包括空格、制表符、换行符等)或指定的其他字符。如果字符串左侧没有需要移除的字符,则字符串保持不变。

下面是 lstrip() 方法的语法:

str.lstrip([chars])
  • chars:可选参数,指定一个字符集合。如果提供了这个参数,lstrip() 将移除字符串开头所有在 chars 集合中的字符,直到遇到不在 chars 中的字符为止。

如果不提供 chars 参数,lstrip() 默认移除所有空白字符。

下面是如何使用 lstrip() 方法的例子:

# 创建一个带有前导空格的字符串
s = "   Hello, World!   "# 移除字符串左侧的空格
stripped_s = s.lstrip()
print(stripped_s)  # 输出: 'Hello, World!   '# 创建一个带有特定前导字符的字符串
s_with_chars = "abcHello, World!"# 移除字符串左侧的 'abc' 字符
stripped_s_with_chars = s_with_chars.lstrip('abc')
print(stripped_s_with_chars)  # 输出: 'Hello, World!'# 尝试移除不在字符串开头的字符
s_no_change = "Hello, World!xyz"
stripped_s_no_change = s_no_change.lstrip('xyz')
print(stripped_s_no_change)  # 输出: 'Hello, World!xyz'(没有变化)

在上面的例子中,lstrip() 方法被用来移除字符串左侧的空格或指定的字符。第一个例子中,字符串左侧的空格被移除了。第二个例子中,字符串左侧的 ‘abc’ 字符被移除了。最后一个例子中,尝试移除不在字符串开头的 ‘xyz’ 字符,因此字符串保持不变。

这个方法在处理用户输入、清理文本数据或在进行字符串比较时非常有用,因为它可以帮助确保字符串以期望的方式进行处理或比较。

1.29 maketrans()函数

maketrans() 是 Python 的 str 模块中的一个静态方法,用于创建一个字符到字符的映射转换表,通常与字符串的 translate() 方法一起使用。maketrans() 方法接受两个等长的字符串参数,分别表示原始字符和要替换的字符。此外,还可以接受一个可选的第三个参数,它是一个字符串,包含了要删除的字符。

下面是 maketrans() 方法的语法:

str.maketrans(x, y[, z])
  • x:一个字符串,包含了要替换的原始字符。
  • y:一个字符串,包含了要替换成的字符,与 x 中的字符一一对应。
  • z(可选):一个字符串,包含了要删除的字符。

maketrans() 方法返回一个转换表,这个表之后可以被 translate() 方法使用来进行字符替换和删除。

下面是如何使用 maketrans() 和 translate() 方法的例子:

# 导入 str 模块以使用 maketrans()
from string import maketrans# 原始字符串
s = "hello world"# 创建转换表,将 'h' 替换为 'H','e' 替换为 'E',并删除 'o'
trans = maketrans('heo', 'HE-', 'o')# 使用 translate() 方法应用转换表
translated_s = s.translate(trans)print(translated_s)  # 输出: "Hll wrd"

在上面的例子中,我们首先导入了 string 模块中的 maketrans() 函数。然后,我们创建了一个转换表,将 ‘h’ 替换为 ‘H’,‘e’ 替换为 ‘E’,并删除了所有的 ‘o’ 字符。最后,我们使用 translate() 方法将转换表应用到原始字符串 s 上,得到了替换和删除字符后的新字符串。

maketrans() 和 translate() 通常用于执行复杂的字符替换和删除操作,它们比简单的 str.replace() 方法更灵活和高效。

1.30 partition()函数

partition() 是 Python 中字符串(str)对象的一个方法,用于将字符串根据指定的分隔符分割成三个部分:分隔符之前的部分、分隔符本身以及分隔符之后的部分。如果字符串中不包含指定的分隔符,则整个字符串将作为第一部分返回,而第二部分和第三部分将为空字符串。

partition() 方法的语法如下:

str.partition(sep)
  • sep:分隔符,即用于分割字符串的字符或子字符串。

partition() 方法返回一个包含三个字符串的元组:(before_sep, sep, after_sep)。其中 before_sep 是分隔符之前的部分,sep 是分隔符本身,after_sep 是分隔符之后的部分。

下面是如何使用 partition() 方法的例子:

# 创建一个字符串
s = "Hello, World!"# 使用逗号作为分隔符来分割字符串
before, sep, after = s.partition(',')print(before)  # 输出: 'Hello'
print(sep)     # 输出: ','
print(after)   # 输出: ' World!'# 如果分隔符不在字符串中,整个字符串将作为第一部分返回
s_no_sep = "NoSeparatorHere"
before_no_sep, sep_no_sep, after_no_sep = s_no_sep.partition(',')print(before_no_sep)  # 输出: 'NoSeparatorHere'
print(sep_no_sep)     # 输出: ''
print(after_no_sep)   # 输出: ''

partition() 方法在处理需要分割字符串但只关心第一个分隔符出现的位置时非常有用。如果你想继续分割分隔符之后的部分,可以使用 rpartition() 方法,它会从字符串的末尾开始搜索分隔符。

需要注意的是,partition() 方法不会修改原字符串,而是返回一个新的元组。

1.31 replace()函数

replace() 是 Python 中字符串(str)对象的一个方法,用于将字符串中所有出现的某个子串替换为另一个子串。这个方法返回一个新的字符串,其中所有的旧子串都已被新子串替换,而原始字符串保持不变。

下面是 replace() 方法的语法:

str.replace(old, new[, count])
old:需要被替换的子串。
new:用于替换 old 的新子串。
count(可选):一个整数,指定替换的最大次数。如果省略或设置为负数,将替换所有出现的 old 子串。

replace() 方法非常灵活,可以用于简单的文本替换,也可以用于复杂的文本处理任务。

下面是如何使用 replace() 方法的例子:

# 创建一个字符串
s = "Hello, World!"# 替换子串
new_s = s.replace("World", "Python")
print(new_s)  # 输出: "Hello, Python!"# 替换子串,只替换前两次出现
limited_replacement = s.replace("o", "0", 2)
print(limited_replacement)  # 输出: "Hell0, W0rld!"# 替换多个不同的子串
replaced_multiple = s.replace("Hello", "Hi").replace("World", "Universe")
print(replaced_multiple)  # 输出: "Hi, Universe!"

在上面的例子中,replace() 方法被用来替换字符串中的子串。第一个例子将 “World” 替换为 “Python”。第二个例子演示了如何使用 count 参数限制替换的次数。最后一个例子展示了如何链式调用 replace() 方法来替换多个不同的子串。

需要注意的是,replace() 方法不会修改原始字符串,而是返回一个新的字符串。原始字符串在 Python 中是不可变的,因此所有的字符串方法都会返回新的字符串对象。

1.32 rfind()函数

rfind() 是 Python 中字符串(str)对象的一个方法,用于从字符串的末尾开始搜索子串,并返回子串最后一次出现的起始索引。如果子串不在字符串中,则返回 -1。

rfind() 方法的语法如下:

str.rfind(sub[, start[, end]])
  • sub:要搜索的子串。
  • start(可选):开始搜索的起始索引。如果是负数,则从字符串末尾开始算起。默认为 -1,即从字符串末尾开始搜索。
  • end(可选):结束搜索的索引。如果是负数,则从字符串末尾开始算起。默认为字符串的长度,即搜索整个字符串。

rfind() 方法返回子串最后一次出现的起始索引,如果子串不在字符串中,则返回 -1。

下面是如何使用 rfind() 方法的例子:

# 创建一个字符串
s = "Hello, World! World is beautiful."# 查找子串 "World" 最后一次出现的索引
index = s.rfind("World")
print(index)  # 输出: 14# 从索引 5 开始查找子串 "World" 最后一次出现的索引
index_from_5 = s.rfind("World", 5)
print(index_from_5)  # 输出: 14# 查找子串 "Beautiful" 最后一次出现的索引
index_beautiful = s.rfind("Beautiful")
print(index_beautiful)  # 输出: 23# 查找不在字符串中的子串
index_not_found = s.rfind("Python")
print(index_not_found)  # 输出: -1# 从字符串末尾开始向前搜索子串 "World"
index_from_end = s.rfind("World", -20, -1)
print(index_from_end)  # 输出: 14

在上面的例子中,rfind() 方法被用来查找子串在字符串中最后一次出现的索引。注意,索引是从 0 开始计数的,所以索引 14 实际上指的是字符串中第 15 个字符的位置。如果子串不在字符串中,rfind() 方法将返回 -1。

rfind() 方法在处理需要从字符串末尾开始搜索的场景时非常有用,特别是当需要找到子串最后一次出现的位置时。

1.33 rindex()函数

rindex() 是 Python 中字符串(str)对象的一个方法,它与 rfind() 方法类似,都是用于从字符串中搜索子串的索引。不过,rindex() 和 rfind() 在处理未找到子串时的行为是不同的。

rindex() 方法从字符串的末尾开始搜索子串,并返回子串最后一次出现的起始索引。如果子串不在字符串中,rindex() 会引发一个 ValueError 异常,而不是返回 -1。

rindex() 方法的语法如下:

str.rindex(sub[, start[, end]])
  • sub:要搜索的子串。
  • start(可选):开始搜索的起始索引。如果是负数,则从字符串末尾开始算起。默认为 -1,即从字符串末尾开始搜索。
  • end(可选):结束搜索的索引。如果是负数,则从字符串末尾开始算起。默认为字符串的长度,即搜索整个字符串。

下面是 rindex() 方法的使用例子:

# 创建一个字符串
s = "Hello, World! World is beautiful."# 查找子串 "World" 最后一次出现的索引
index = s.rindex("World")
print(index)  # 输出: 14# 尝试查找不在字符串中的子串
try:index_not_found = s.rindex("Python")print(index_not_found)
except ValueError as e:print(e)  # 输出: substring not found# 从索引 5 开始查找子串 "World" 最后一次出现的索引
index_from_5 = s.rindex("World", 5)
print(index_from_5)  # 输出: 14# 从字符串末尾开始向前搜索子串 "World"
index_from_end = s.rindex("World", -20, -1)
print(index_from_end)  # 输出: 14

在上面的例子中,rindex() 方法被用来查找子串在字符串中最后一次出现的索引。如果子串不在字符串中,rindex() 引发了 ValueError 异常。与 rfind() 方法不同,rindex() 在子串不存在时不会返回 -1,而是直接抛出异常。

因此,在使用 rindex() 时,通常需要配合异常处理来确保代码的健壮性,以防因子串不存在而导致程序崩溃。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/757559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android、Jetpack Compose使用 Room数据库kapt注解时出现的相关问题整理。

谢谢阅览、关注!! 一、问题描述: 问题 1:> a failure occurred while executing org.jetbrains.kotlin.compilerrunner.gradlecompilerrunnerwithworkers$gradlekotlincompilerworkaction > internal compiler error. see log for more details 问题 2:a failure …

在Spring Boo动态修改日志级别

在Spring Boot中,可以通过编程的方式动态修改日志级别。以下是一个简单的例子,展示了如何使用Logback(Spring Boot默认的日志框架)来实现这一功能。 首先,确保你的项目已经包含了spring-boot-starter-logging依赖。 …

python爬虫之xpath入门

文章目录 一、前言参考文档: 二、xpath语法-基础语法常用路径表达式举例说明 三、xpath语法-谓语表达式举例注意 四、xpath语法-通配符语法实例 五、选取多个路径实例 六、Xpath Helper安装使用说明例子: 七、python中 xpath 的使用安装xpath 的依赖包xm…

基于yolov2深度学习网络的人脸检测matlab仿真,图像来自UMass数据集

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 网络架构与特征提取 4.2 输出表示 4.3损失函数设计 4.4预测阶段 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 load yolov2.mat% 加载…

爱注讲台三尺案不辞长作“育花”人

—记邵阳市优秀班主任、新宁县优秀教师周芳平 教育是人与人心灵上最美妙的接触,只要用心体察,用情关注,每一位学生都会走向金光大道。 ---题记 “亲爱的妈妈,祝您节日快乐!”2024年3月8日,一条从深圳华为…

28-3 文件上传漏洞 -白盒审计绕过

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、upload-labs 靶场的第7关 先进行代码审计 $is_upload = false; $msg = null; if (isset($_POST[submit])) {if (file_exists($UPLOAD_ADDR)) {$deny_ext = array(".php&…

机器学习 - PyTorch里的aggregation

在PyTorch里,可以在tensor里找到min, max, mean, sum 等aggregation值。 直接上代码 import torch x torch.arange(0, 100, 10) print(x) print(f"Minimum: {x.min()}") print(f"Minimum: {torch.min(x)}") print(f"Maximum: {x.max()}…

Spring Boot:筑基

Spring Boot 前言概述使用 Intellij idea 快速创建 Spring Boot 项目注意事项 前言 在学习 Spring 、SpringMVC 、MyBatis 和 JPA 框架的过程中,了解到 SSM 框架为 Java Web 开发提供了强大的后端支持,JPA 框架则简化了数据库的操作。然而,S…

安卓面试题多线程36-40

36. 请问什么是锁消除和锁粗化?(1)锁消除 所消除就是虚拟机根据一个对象是否真正存在同步情况,若不存在同步情况,则对该对象的访问无需经过加锁解锁的操作。 比如StringBuffer的append方法,因为append方法需要判断对象是否被占用,而如果代码不存在锁竞争,那么这部分的性…

Cesium:按行列绘制3DTiles的等分线

作者:CSDN @ _乐多_ 本文将介绍如何使用 Cesium 引擎根据模型的中心坐标,半轴信息,绘制 3DTiles 对象的外包盒等分线。 外包盒是一个定向包围盒(Oriented Bounding Box),它由一个中心点(center)和一个包含半轴(halfAxes)组成。半轴由一个3x3的矩阵表示,这个矩阵是…

算法第三十一天-区域和检索【数组不可变】

区域和检索-数组不可变 题目要求 解题思路 为方便描述,把 n u m s nums nums 记作 a a a。 对于数组 a a a,定义它的前缀和 s [ 0 ] 0 s [ 1 ] a [ 0 ] s [ 2 ] a [ 0 ] a [ 1 ] ⋮ s [ i ] a [ 0 ] a [ 1 ] ⋯ a [ i − 1 ] ∑ j 0 i −…

matplotlib使用总结1

matplotlib 是一个用于创建静态、动态和交云图的 Python 绘图库。它可以用于 Python 脚本、Python 和 IPython shell、Jupyter 笔记本、web 应用服务器以及四个图形用户界面工具包中。matplotlib 尝试让简单的事情更简单,让困难的事情成为可能。你可以生成线图、柱状…

借记卡年费和小额账户管理费,以及换卡面不换号

文章目录 年费和小额账户管理费减免政策:每家银行均可有一张借记卡享受双免政策减免政策:代发工资、低保、社保、医保、失业保险、养老金、退休金、住房公积金等账户减免政策:二、三类电子账户一类卡、二类卡和三类卡二、三类电子账户不收取年…

Rust字符串深入理解

一、概述 Rust是一种系统级语言,进行操作系统等底层应用开发,同时又具合理的抽象处理能力。在进行Rust编程时,字符串处理是程序员经常碰到的工作。本文深入解析Rust语言中字符串的使用,包括 static string,String与&a…

LeetCode 2578.最小和分割

给你一个正整数 num ,请你将它分割成两个非负整数 num1 和 num2 ,满足: num1 和 num2 直接连起来,得到 num 各数位的一个排列。 换句话说,num1 和 num2 中所有数字出现的次数之和等于 num 中所有数字出现的次数。 num…

x86 32 64 Arm这些听过但不懂,都是什么?是架构还是系统?一文梳理

x86 听过吗?64位操作系统知道吧 和x86什么关系32和64都是什么东西?曾经的我也一头雾水,今天我才来整理一下,惭愧惭愧!今天带着沉重的心情来梳理一下学习内容吧 如果你很熟悉很了解计算机的话,应该知道&…

深度分析:社科赛斯——穿越市场周期二十二年的考研机构

近日,一份由有关部门发布的统计数据引发了广泛关注:在中国,中小企业的平均寿命仅有3.7年,而小微企业更是不到3年。这一数字凸显了中小企业所面临的挑战与困境。然而,在这个充满风险与变化的商业环境中,社科…

pytorch 鲜见操作

对两个 tensor 做逻辑运算,比如 & (与) import torch# 定义两个张量 tensor_a torch.tensor([1, 0, 1, 0], dtypetorch.bool) tensor_b torch.tensor([1, 1, 0, 0], dtypetorch.bool)# 执行逻辑与操作 result tensor_a & tensor_bprint(result)结果输出…

U-Net代码复现–train.py

本文记录自己的学习过程,内容包括: 代码解读:Pytorch-UNet 深度学习编程基础:Pytorch-深度学习(新手友好) UNet论文解读:医学图像分割:U_Net 论文阅读 数据:https://hack…

中霖教育:二级建造师证书好考吗?

在建筑行业,二级建造师资格认证相较于一级建造师资格,难度会低一些。考试科目共有三科,考生需要在连续两个年度内通过所有科目的考试才为通过。 对于具备建筑相关基础和实践经验的考生来说,二级建造师的考试难度会低一些。根据往…