Python字符串处理全攻略(三):常用内置方法轻松掌握

news2024/11/26 19:33:24

目录

  • 引言
  • Python字符串常用内置方法
    • str.index()
      • 功能介绍
      • 语法
      • 注意事项
      • 总结
    • str.startswith()
      • 功能介绍
      • 语法
      • 示例
      • 注意事项
    • str.expandtabs()
      • 功能介绍
      • 语法
      • 示例
      • 注意事项
      • 总结
    • str.splitlines()
      • 功能介绍
      • 语法
      • 示例
      • 注意事项
      • 总结
    • str.swapcase()
      • 功能介绍
      • 语法
      • 示例
      • 注意事项
  • 结束语

引言

欢迎来到Python的世界!字符串是Python中最基本的数据类型之一,它们就像是文本的小盒子,可以帮我们存储和处理各种各样的文本数据。

Python非常贴心地为我们提供了许多内置方法来处理这些字符串。这些方法就像是魔法工具,可以帮助我们完成各种神奇的文本操作和转换。

今天,我们继续探索常用的Python字符串内置方法。我会用最简单的语言,通过具体的示例代码,详细解释每个方法的使用方法和应用场景。让我们一起开始这个有趣的Python字符串之旅吧!

Python字符串处理全攻略(一):常用内置方法轻松掌握
Python字符串处理全攻略(二):常用内置方法轻松掌握

Python字符串常用内置方法

str.index()

功能介绍

index() 可用于查找子字符串在字符串中首次出现的位置。如果找不到子字符串,则会引发一个 ValueError 异常。

语法

str.index(sub, start=0, end=len(string))
  • sub:要查找的子字符串。
  • startend:可选参数,指定查找的子字符串的起始和结束位置。

示例

  1. 使用起始和结束位置:
s = "hello world, how are you?"
print(s[6:15])  # world, ho
print(s.index("world", 6, 15))  # 输出: 6

s = "hello world, how are you?"
print(s[8:15])  # rld, ho
print(s.index("world", 8, 15))  # 输出: ValueError: substring not found
  1. 查找不存在的子字符串:
s = "hello world"
try:
    print(s.index("python"))  # 会引发 ValueError 异常
except ValueError as e:
    print(e)  # 输出: 'substring not found'
  1. 使用负数索引:
s = "hello world"
print(s.index("r", -5, -2))  # 输出: 8 (从倒数第5个字符开始,到倒数第3个字符为止,找到第一个 'r')

s = "hello world"
print(s.index("l", -5, -2))  # 输出: ValueError: substring not found (从倒数第5个字符开始,到倒数第3个字符为止,找到第一个 'l')

注意事项

  • 当使用 index() 方法时,应确保要查找的子字符串确实存在于原始字符串中,否则会引发异常。为了避免异常,可以使用 find() 方法代替,它在找不到子字符串时会返回 -1 而不是引发异常。
  • 使用负数索引时,注意索引的有效范围。在 Python 中,-1 表示最后一个字符,-2 表示倒数第二个字符,以此类推。
  • 当使用起始和结束位置参数时,应确保这些参数的有效性,即它们不应该超出字符串的长度或为负数。否则,ValueError 异常会被引发。
  • 如果查找的子字符串有多个相同的实例,index() 方法只会返回第一个实例的位置。如果需要找到所有实例的位置,可以考虑使用其他方法或自己编写循环来遍历并查找。
  • 注意大小写敏感性。默认情况下,index() 方法是大小写敏感的,所以 “Hello” 和 “hello” 是不同的字符串。如果要进行大小写不敏感的比较,可以先将字符串转换为全部小写或全部大写。

总结

index() 方法是一个非常实用的字符串方法,用于查找子字符串在字符串中的位置。但使用时需要注意可能引发的异常和索引的有效范围。与 find() 方法相比,index() 方法更为严格,要求子字符串必须存在。在实际应用中,可以根据需求选择使用 index()find() 方法。


str.startswith()

功能介绍

startswith() 可用于检查字符串是否以指定的前缀开始。如果字符串以给定的前缀开始,则返回 True,否则返回 False

语法

str.startswith(prefix, start=0, end=len(string))
  • prefix:要检查的前缀。
  • startend:可选参数,表示在字符串的哪个范围内进行前缀检查。

示例

  1. 常规操作
s = "hello world"
print(s.startswith("hello"))  # 输出: True
print(s.startswith("world"))  # 输出: False
  1. 使用 startend 参数:
s = "hello world"
print(s[3:])
print(s.startswith("lo", 3))  # 输出: True
print(s[2:6])
print(s.startswith("lo", 2, 6))  # 输出: False

运行结果:

在这里插入图片描述

注意事项

  • startswith() 是大小写敏感的,所以 “Hello” 和 “hello” 被视为不同的前缀。
  • 如果要忽略大小写,可以先将字符串转换为全小写或全大写,然后再使用 startswith()
  • 注意 startend 参数是可选的,默认情况下它们分别为 0 和字符串的长度。这表示整个字符串都会被检查。
  • 如果提供的 prefix 是空字符串,则任何字符串都会返回 True,因为任何非空字符串都以空字符串开始。

str.expandtabs()

功能介绍

expandtabs() 可用于将字符串中的制表符(\t)转换为一定数量的空格。该方法默认将制表符转换为 8 个空格,但也可以通过提供一个可选参数来指定不同的空格数量。

语法

str.expandtabs(tabsize=8)
  • tabsize:可选参数,指定转换后的制表符应占用的空格数量。默认值为 8。

示例

  1. 常规操作
s = "hello\tworld"
print(s.expandtabs())  # 输出: 'hello    world'(其中 \t 被替换为 8 个空格)
  1. 指定不同的 tabsize
s = "a\tb\tc\td"
print(s.expandtabs(2))  # 输出: 'a b c d'(每个 \t 被替换为 2 个空格)
  1. 在字符串中有多个制表符:
s = "a\tb\tc\td"
print(s.expandtabs(2))  # 输出: 'a       b       c       d'(每个 \t 被替换为 8 个空格)
  1. tabsize 为 0 的情况:
s = "h\te\tl\tl\to\tworld"
print(s.expandtabs(0))  # 输出: 'helloworld'(\t 被完全删除)
  1. 使用 expandtabs() 处理多行(字符串含有\n)字符串:
s = "line1\tcol2\nline2\tcol2"
print(s.expandtabs(2))  # 输出:(每一行的 \t 都被替换为 2 个空格)
# line1 col2
# line2 col2

注意事项

  • expandtabs() 方法返回一个新的字符串,原始字符串不会被修改(因为字符串在 Python 中是不可变的)。
  • 如果 tabsize 参数小于 1,该方法将制表符视为零宽度,从而删除它们。
  • 如果一个字符串中有多个制表符,它们都将被转换为相同数量的空格。
  • 该方法在处理多行文本时特别有用,因为它可以确保文本在具有固定宽度字体的编辑器或控制台中正确对齐。

总结

expandtabs() 方法提供了一种简单的方式来处理字符串中的制表符,使它们可以被转换为一定数量的空格。这对于格式化文本、确保文本对齐或在处理从其他来源获取的包含制表符的文本时非常有用。通过调整 tabsize 参数,你可以控制转换后的空格数量,以适应不同的格式需求。


str.splitlines()

功能介绍

splitlines() 可用于根据行边界符来拆分字符串。该方法返回一个列表,其中每个元素都是原始字符串的一行。默认情况下,splitlines() 会考虑所有常见的行边界符,如换行符 \n、回车符 \r 以及回车加换行 \r\n

语法

str.splitlines(keepends=False)
  • keepends:可选参数。默认为 False,意味着返回的行不包括行边界符。如果设为 True,则返回的行会保留行边界符。

示例

  1. 常规操作
text = "Hello\nWorld\n"
lines = text.splitlines()
print(lines)  # 输出: ['Hello', 'World']
  1. 使用 keepends=True
text = "Hello\nWorld\n"
lines = text.splitlines(keepends=True)
print(lines)  # 输出: ['Hello\n', 'World\n']
  1. 处理混合的行边界符:
text = "Hello\r\nWorld\nPython"
lines = text.splitlines()
print(lines)  # 输出: ['Hello', 'World', 'Python']
  1. 空字符串和只有一个行边界符的字符串:
text1 = ""
text2 = "\n"
print(text1.splitlines())  # 输出: []
print(text2.splitlines())  # 输出: [''] 或(如果 keepends=True)['\n']
  1. 使用非常见的行边界符:
text = "Hello\vWorld"  # \v 是垂直制表符,也可以作为行边界符
lines = text.splitlines()
print(lines)  # 输出: ['Hello', 'World']

注意事项

  • splitlines() 方法不会改变原始字符串。
  • 如果字符串为空或只包含行边界符,那么返回的列表可能为空或只包含空字符串。具体取决于 keepends 参数的设置。
  • 该方法对于处理文本文件或需要按行操作的文本数据非常有用。
  • 不同的操作系统可能使用不同的行边界符 ⇒ 使用 splitlines() 可以确保跨平台的兼容性。
  • splitlines() 只考虑行边界符,不会根据其他字符(如空格或制表符)来拆分字符串。

总结

splitlines() 是一个在处理文本数据时非常有用的方法,特别是当你需要按行操作或解析文本文件时。它提供了一个简单的方式来拆分字符串成行,并允许你选择是否保留行边界符。


str.swapcase()

功能介绍

swapcase() 可用于将字符串中的所有大写字母转换为小写字母,所有小写字母转换为大写字母。

语法

str.swapcase()

示例

  1. 常规操作
s = "Hello World"
print(s.swapcase())  # 输出: hELLO wORLD
  1. 处理全大写或全小写的字符串:
s1 = "HELLO"
print(s1.swapcase())  # 输出: hello
s2 = "world"
print(s2.swapcase())  # 输出: WORLD

注意事项

  • swapcase() 方法不会改变原始字符串。它会返回一个新的字符串,该字符串是原始字符串的大小写转换版本。原始字符串保持不变。
  • 该方法不会考虑非字母字符的大小写状态,只转换字母部分。非字母字符保持不变。
  • 在处理多个字符的字符串时,要确保正确处理字符串中的每个字符。大小写转换可能会影响字符串的语义和格式。
  • 在处理用户输入或来自不可靠源的字符串时,要格外小心,因为大小写转换可能会导致意外的结果或安全问题(例如,将敏感信息从大写转换为小写)。

结束语

  • 亲爱的读者,感谢您花时间阅读我们的博客。我们非常重视您的反馈和意见,因此在这里鼓励您对我们的博客进行评论。
  • 您的建议和看法对我们来说非常重要,这有助于我们更好地了解您的需求,并提供更高质量的内容和服务。
  • 无论您是喜欢我们的博客还是对其有任何疑问或建议,我们都非常期待您的留言。让我们一起互动,共同进步!谢谢您的支持和参与!
  • 我会坚持不懈地创作,并持续优化博文质量,为您提供更好的阅读体验。
  • 谢谢您的阅读!

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

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

相关文章

【Python】面向对象

一、初识对象 二、成员方法 三、类和对象 四、构造方法 五、其它内置方法 六、封装 七、继承 八、类型注解 九、多态 面向对象概念 面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它将数据和操作数据的方法组织…

【机器学习】【线性回归】梯度下降

文章目录 [toc]数据集实际值估计值估计误差代价函数学习率参数更新Python实现线性拟合结果代价结果 数据集 ( x ( i ) , y ( i ) ) , i 1 , 2 , ⋯ , m \left(x^{(i)} , y^{(i)}\right) , i 1 , 2 , \cdots , m (x(i),y(i)),i1,2,⋯,m 实际值 y ( i ) y^{(i)} y(i) 估计值 h …

HTML美化网页

使用CSS3美化的原因 用css美化页面文本,使页面漂亮、美观、吸引用户 可以更好的突出页面的主题内容,使用户第一眼可以看到页面主要内容 具有良好的用户体验 <span>标签 作用 能让某几个文字或者某个词语凸显出来 有效的传递页面信息用css美化页面文本&#xff0c;使页面漂…

事务相关知识

库存问题 先扣库存–>如果订单服务崩溃了&#xff0c;但是库存服务没有崩溃&#xff0c;这个时候库存扣减成功了&#xff0c;那么就会库存不能归还,&#xff0c;无法回滚。 后扣库存–>1&#xff1a;调用库存服务失败(比如网络抖动&#xff0c;库存服务挂了)–>回滚。…

VSCode运行时弹出powershell

问题 安装好了vscode并且装上code runner插件后&#xff0c;运行代码时总是弹出powershell,而不是在vscode底部终端 显示运行结果。 解决方法 打开系统cmd ,在窗口顶部条右击打开属性&#xff0c;把最下面的旧版控制台选项取消&#xff0c;即可

python区块链简单模拟【01】

完整代码 https://gitee.com/ihan1001 https://github.com/ihan1001 重点&#xff1a;时间戳&#xff0c;MD5哈希&#xff0c;SHA256哈希&#xff0c;base64一种用64个字符表示任意二进制数据的方法&#xff0c;ECC椭圆曲线算法 import time time.time()datetime.now().strfti…

Ignite内存配置

配置内存 #1.内存架构 #1.1.概述 Ignite内存架构通过可以同时在内存和磁盘上存储和处理数据及索引&#xff0c;得到了支持磁盘持久化的内存级性能。 多层存储的运行方式类似于操作系统&#xff08;例如Linux&#xff09;的虚拟内存。但是这两种类型架构之间的主要区别是&…

懒加载图片案例

整体效果&#xff1a; HTML部分&#xff1a; <div class"lazy-box"><img class"lazy" data-original"img/1.jpg" alt"1.jpg" width"960" height"540"><img class"lazy" data-original…

MySQL 数据库系列课程 04:MySQL Workbench的安装

Workbench 是 MySQL 官方推出的免费的强大的可视化工具&#xff0c;不熟悉命令行工具的人&#xff0c;可以安装这一款软件&#xff0c;通过编写 SQL 进行数据库中数据的增删改查操作&#xff0c;接下来我们详细说明一下 Workbench 的安装。 一、Windows安装Workbench &#x…

怎么为pdf文件添加水印?

怎么为pdf文件添加水印&#xff1f;PDF是一种很好用的文件格式&#xff0c;这种格式能够很有效的保护我们的文件&#xff0c;但有时可能还会被破解&#xff0c;这种时候在PDF上添加水印就是比较好的方法。 综上所述&#xff0c;PDF是保密性很强的文件&#xff0c;但添加水印能够…

深度学习入门(python)考试速成均方误差

均方误差 表示神经网络的输出&#xff0c;表示监督数据&#xff0c;表示数据的维度。 这里神经网络的输出y是softmax函数的输出 数组元素的索引从第一个开始依次对应数组“0”&#xff0c;“1”&#xff0c;“2”&#xff0c;...... 由于softmax函数的输出可理解为概率 由此…

华为云Stack 8.X 流量模型分析(二)

二、流量模型分析相关知识 1.vNIC ​ 虚拟网络接口卡(vNIC)是基于主机物理 NIC 的虚拟网络接口。每个主机可以有多个 NIC&#xff0c;每个 NIC 可以是多个 vNIC 的基础。 ​ 将 vNIC 附加到虚拟机时&#xff0c;Red Hat Virtualization Manager 会在虚拟机之间创建多个关联的…

LeetCode 剑指 Offer II 054. 所有大于等于节点的值之和

给定一个二叉搜索树&#xff0c;请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。 提醒一下&#xff0c;二叉搜索树满足下列约束条件&#xff1a; 节点的左子树仅包含键 小于 节点键的节点。 节点的右子树仅包含键 大于 节点键的节点。 左右子树也必须…

网络监测之如何保障企业业务系统安全?

网络信息安全在网络时代的重要性不言而喻。随着互联网的普及和数字化进程的加速&#xff0c;网络已经成为人们生活、工作和学习的重要平台。在这个平台上&#xff0c;信息交流、数据存储、在线支付等都需要依赖于网络信息安全。其中企事业单位业务系统安全值得关注。 企事业单…

前端未死,顺势而生

随着人工智能和低代码的崛起&#xff0c;“前端已死”的声音逐渐兴起。前端已死&#xff1f;尊嘟假嘟&#xff1f;快来发表你的看法吧&#xff01; 一、“前端已死”因何而来&#xff1f; 在开始讨论之前&#xff0c;首先要明确什么是“前端”。 所谓前端&#xff0c;主要涉及…

计算机图形学理论(3):着色器编程

本系列根据国外一个图形小哥的讲解为本&#xff0c;整合互联网的一些资料&#xff0c;结合自己的一些理解。 CPU vs GPU CPU支持&#xff1a; 快速缓存分支适应性高性能 GPU支持&#xff1a; 多个 ALU快速板载内存并行任务的高吞吐量&#xff08;在每个片段、顶点上执行着色…

概率中的 50 个具有挑战性的问题 [05/50]:正方形硬币

一、说明 我最近对与概率有关的问题产生了兴趣。我偶然读到了弗雷德里克莫斯特勒&#xff08;Frederick Mosteller&#xff09;的《概率论中的五十个具有挑战性的问题与解决方案》&#xff09;一书。我认为创建一个系列来讨论这些可能作为面试问题出现的迷人问题会很有趣。每篇…

Spring Security 6.x 系列(12)—— Form表单认证登录注销自定义配置

一、前言 在本系列文章中介绍了 Form 表单认证和注销流程&#xff0c;对部分源码也进行详细分析。 本章主要学习 Spring Security 中表单认证登录注销的相关自定义配置。 二、自定义登录页面 Spring Security 表单认证默认规则中对未认证的请求会重定向到默认登录页面&…

固定效应模型-以stata为工具

固定效应模型-以stata为工具 文章目录 1.固定效应模型2. 模型原理3. `stata`代码实现1.固定效应模型 固定效应模型(Fixed Effects Model)是一种面板数据分析方法,通过引入个体固定效应来控制个体间的异质性,并更准确地估计解释变量对因变量的影响。它在许多经济、社会科学…

快速剪辑视频软件,视频图像翻转软件

在这个信息爆炸的时代&#xff0c;视频已经成为了人们获取信息、娱乐、学习的主要方式之一。一个好的视频&#xff0c;不仅可以吸引观众的眼球&#xff0c;更可以传达出深层次的意义。那该什么快速的编辑视频&#xff0c;有没有好用的工具推荐呢&#xff1f;今天小编就给大家介…