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

目录

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

结束语

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

XUbuntu22.04之跨平台容器格式工具:MKVToolNix(二百零三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

【Hadoop】Zookeeper是什么?怎么理解它的工作机制?

Zookeeper是什么Zookeeper工作机制 Zookeeper是什么 Zookeeper是一个开源的分布式的,为别的分布式矿建提供协调服务的Apache项目。分布式简单地理解就是多台机器共同完成一个任务。 Zookeeper工作机制 从设计模式的角度来理解,是一个基于观察者模式设…

css学习笔记6(盒子模型)

CSS盒子模型 五、CSS盒子模型1.CSS长度单位2.元素的显示模式3.总结各元素的显示模式4.修改元素显示模式5.盒子模型的组成6.盒子内容区(content)7.关于默认宽度8.盒子内边距(padding)9.盒子边框(border)10.盒…

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

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

指针的含义

我们还取前面图片解释的道理: pa表示的意思就是这个地址,并不会显示出10这个数字 *pa就是指针,最后指向了a10,所以他最后程序输出是10 &pa这个含义就是取pa的地址,那么pa是一个虚拟的地址,只是简单的…

概率中的50个具有挑战性的问题[02/50]:连续获胜

一、说明 我最近对与概率有关的问题产生了兴趣。我偶然读到了弗雷德里克莫斯特勒(Frederick Mosteller)的《概率论中的五十个具有挑战性的问题与解决方案》(Fifty Challenge Problems in Probability with Solutions)一书。我认为…

python实现图像的几何变换——冈萨雷斯数字图像处理

1、 实现图像的平移。 原理: 图像的平移是一种基本的图像处理操作,它将图像中的每个像素沿着指定的方向和距离移动,以创建一个新的平移后的图像。平移的原理很简单,通常涉及到以下几个步骤: 确定平移的距离和方向:首先…

2024苹果手机iOS管理软软件iMazing2.17永久免费版下载教程

iMazing2024是一款专业的苹果IOS设备管理器,强悍的性能远超苹果的iTunes,iMazing 能让广大果粉能已自己的方式管理苹果设备,无需iTunes即可畅快传输或者保存苹果设备中的音乐、消息、文件以及其他数据。 iMazing2Mac-最新绿色安装包下载如下&…

下一站,上岸@24考研er

时间过的好快, 考研倒计时①天 去年这个时候, 我应该也是充满未知地进入即将来到的考研初试 去年,这个时候,疫情😷刚刚放开 许多人都🐑,发烧,可幸的是我受影响不大 &#x1f3…

供应链 | 顶刊MSOM论文精选——关税对全球供应链网络配置的影响:模型、预测和未来研究

编者按 关税对企业全球供应链网络设计决策的影响 本文为 M&SOM期刊20周年特邀论文,原文信息: Lingxiu Dong, Panos Kouvelis (2020) Impact of Tariffs on Global Supply Chain Network Configuration: Models, Predictions, and Future Research…

MySQL 数据库系列课程 05:MySQL命令行工具的配置

一、Windows启动命令行工具 (1)打开 Windows 的开始菜单,找到安装好的 MySQL,点击MySQL 8.0 Command Line Client - Unicode,这个带有 Unicode 的,是支持中文的,允许在命令行中敲中文。 &…

Java经典面试题——手写快速排序和归并排序

题目链接:https://www.luogu.com.cn/problem/P1177 输入模板: 5 4 2 4 5 1快速排序 技巧:交换数组中的两个位置 a[l] a[l] a[r] - (a[r] a[l]); 稳定不稳定?:不稳定 注意找哨兵那里内循环的等于号不能漏,不然…

【STM32】I2C通信

基本的任务是:通过通信线,实现单片机读写外挂模块寄存器的功能。其中至少要实现在指定位置写寄存器和在指定的位置读寄存器这两个功能。 异步时序的优点:省一根时钟线,节约资源;缺点:对事件要求严格&#…

VSCode运行时弹出powershell

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

关于JVM的垃圾回收GC的一些记录

目录 一、JVM内存区域划分 二、从一个基本问题开始引入垃圾回收 三、GC作用的区域 三、如何确定一个对象是否可以被当成垃圾进行回收 (1)引用计数法 (2)可达性分析算法 (3)引用的类型 (3…

Netty Review - Netty自动重连机制揭秘:原理与最佳实践

文章目录 概述Pre客户端自动重连CodeServerClient (重点) 测试启动自动重连运行过程中断链后的自动重连 概述 Pre Netty Review - 深入探讨Netty的心跳检测机制:原理、实战、IdleStateHandler源码分析 客户端自动重连 自动重连是一个用于提高网络应用稳定性和可靠…

OpenSource - SCM服务管理平台

文章目录 官方网址文档下载版本功能解决了哪些问题使用对象优势Linxu版本scm-dev deb服务列表 Windows版本scm-dev 服务列表scm-all 服务列表scm-jdk 服务列表scm-springboot 精简版本服务列表scm-springboot 服务列表scm-tomcat 服务列表 SCM 截图 官方网址 https://scm.chus…

如何更好的去理解源码

前言 这篇文章我准备来聊一聊如何去阅读开源项目的源码。 在聊如何去阅读源码之前,先来简单说一下为什么要去阅读源码,大致可分为以下几点原因: 最直接的原因,就是面试需要,面试喜欢问源码,读完源码才可以…

代码随想录-刷题第三十六天

435. 无重叠区间 题目链接:435. 无重叠区间 思路:本题与452. 用最少数量的箭引爆气球非常像,弓箭的数量就相当于是非交叉区间的数量,只要把弓箭那道题目代码里射爆气球的判断条件加个等号(认为[0,1][1&am…

Kafka集群架构服务端核心概念

目录 Kafka集群选举 controller选举机制 Leader partition选举 leader partition自平衡 partition故障恢复机制 follower故障 leader故障 HW一致性保障 HW同步过程 Epoch Kafka集群选举 1. 在多个broker中, 需要选举出一个broker, 担任controller. 由controller来管理…