本篇我们学习如何利用字符串的 index() 方法和 find() 方法获取字符串中子串的位置。

字符串 index() 方法

字符串的 index() 方法用于返回字符串中指定子串第一次出现的位置。index() 方法的语法如下:

str.index(sub[, start[, end]])

index() 方法包含三个参数:

  • sub 是需要查找的子串。
  • start 和 end 参数分别表示查找操作的开始位置和结束位置,它们都是可选参数。

如果在字符串 str 中的 str[start:end] 范围内没有找到子串 sub,index() 方法将会返回 ValueError 错误。

如果只需要判断字符串中是否存在某个子串,可以使用 in 操作符:sub in str。

index() 方法示例

下面我们来看几个使用 index() 方法的示例。

在字符串中查找子串的位置

以下示例使用 index() 方法在字符串“Python will, Python will rock you.’”中查找子串“Python”第一次出现的位置:

s = 'Python will, Python will rock you.'
position = s.index('Python')print(position)

输出结果如下:

0

字符串 s 中包含两个子串“Python”,index() 方法返回了第一个子串的位置,字符串的下标位置从 0 开始。

在字符串指定范围内查找子串的位置

以下示例使用 index() 方法在字符串“Python will, Python will rock you.”的切片 str[1:] 中查找子串“Python”第一次出现的位置:

s = 'Python will, Python will rock you.'
position = s.index('Python', 1)print(position)

输出结果如下:

13

以上示例返回子串“Python”在字符串 s 中第二次出现的位置。

在字符串中未找到指定的子串

以下示例返回了 ValueError 错误,因为字符串“Python will, Python will rock you.”中不存在子串“Java”:

s = 'Python will, Python will rock you.'
position = s.index('Java')print(position)

输出结果如下:

ValueError: substring not found

如果希望没有找到子串的情况下不返回 ValueError 错误,可以使用字符串的 find() 方法查找子串。find() 方法在未找到子串时返回 -1,而不是 ValueError。

字符串 find() 方法

字符串的 index() 方法和 index() 方法类似,也可以用于返回字符串中指定子串第一次出现的位置。index() 方法的语法如下:

str.find(sub[, start[, end]])

find() 方法包含三个参数:

  • sub 是需要查找的子串。
  • start 和 end 参数分别表示查找操作的开始位置和结束位置,它们都是可选参数。start 默认为 0,end 默认为 length-1,length 是字符串 str 的长度。

如果在字符串 str 中的 str[start:end] 范围内没有找到子串 sub,find() 方法将会返回 -1。

find() 方法示例

在字符串中查找子串的位置

以下示例使用 find() 方法在字符串“Johny Johny Yes Papa”中查找子串“Johny”第一次出现的位置:

s = 'Johny Johny Yes Papa'
result = s.find('Python')print(result)

输出结果如下:

0

字符串 s 中包含两个子串“Johny”,find() 方法返回了第一个子串的位置。

在字符串指定范围内查找子串的位置

以下示例使用 index() 方法在字符串“Johny Johny Yes Papa”的切片 str[1:] 中查找子串“Johny”第一次出现的位置:

s = 'Johny Johny Yes Papa'
result = s.find('Johny', 1)print(result)

输出结果如下:

6

以上示例返回子串“Johny”在字符串 s 中第二次出现的位置。

在字符串中未找到指定的子串

以下示例返回了 -1,因为字符串“Johny Johny Yes Papa.”中不存在子串“Julia”:

s = 'Johny Johny Yes Papa'
result = s.find('Julia')print(result)

输出结果如下:

-1

总结

  • 字符串的index() 方法和 find() 方法都可以用于查找字符串中子串第一次出现的位置。
  • 如果没有找到子串,index() 方法返回 ValueError 错误,但是 find() 方法返回 -1。

【Python入门教程】第82篇 常用字符串方法之查找子串相关推荐

  1. 【Python入门教程】第83篇 常用字符串方法之startswith()和endswith()

    本篇我们学习如何使用字符串 startswith() 方法检查一个字符串是否以某个子串开头,以及使用 endswith() 方法检查一个字符串是否以某个子串结束. 字符串 startswith() 方 ...

  2. 【Python入门教程】第85篇 常用字符串方法之大小写判断

    本篇我们介绍几个用于判断字符串大小写的方法,包括 islower().isupper() 以及 istitle(). 字符串 islower() 方法 islower() 方法用于检查字符串中的字符是 ...

  3. 【Python入门教程】第81篇 常用字符串方法之拆分字符串

    本篇将会介绍如何利用字符串对象的 split() 方法将一个字符串拆分成多个子串. 字符串 split() 方法 字符串的 split() 方法用于拆分字符串,返回一个由子串组成的列表.split() ...

  4. python字符串的特点_字符串特点_清华尹成python入门教程_少儿编程视频-51CTO学院...

    此课程与<清华编程高手.尹成.带你实战python入门>大体相同,只需购买其中的一门课程. 本课程由清华大学尹成老师录制,课程的特色在于讲解原理的同时引入了每个程序员都热衷的黑客技术.py ...

  5. python实现登录支付宝收能量_适合零基础人群学习的Python入门教程

    适合零基础人群学习的Python入门教程学什么?小编为大家准备的Python学习教程,课程主要讲解:Python核心编程.Linux基础.前端开发.Web开发.爬虫开发.人工智能等内容. 对于初学者想 ...

  6. Python入门教程详解

    Python入门教程 目录 1. 简介 2. 安装 3. 基本语法 4. 数据类型 5. 条件语句 6. 循环 7. 函数 8. 模块 9. 异常处理 10. 文件输入输出 1. 简介 Python是 ...

  7. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(四)了解魔法百宝箱列表、字典及基本数据类型

    学习目标 了解魔法世界中可更改容器--变量 了解魔法世界的基本数值类型--字符串.整数 了解魔法百宝箱--字典.列表 了解列表如何添加值 了解字典如何添加值 了解字典与列表定义的不同符号 目录 第一篇 ...

  8. python入门教程完整版(懂中文就能学会)-Python入门教程完整版(懂中文就能学会)...

    不过小编的内心是强大的,网友虐我千百遍,我待网友如初恋,因为今天又给大家带来了干货,Python入门教程完整版,完整版啊!完整版! 言归正传,小编该给大家介绍一下这套教程了,希望每个小伙伴都沉迷学习, ...

  9. 小学生python入门-极度舒适的全套 Python 入门教程,小学生看了也能学会

    编程几乎已经成为现代人的一门必修课,特别是 Python ,不仅长期霸占编程趋势榜.薪资榜第一,还屡屡进入小学教材,甚至成为浙江省信息技术高考项目-- 今天,小编带来了一门极度舒适的 Python 入 ...

最新文章

  1. 算法学习之路|统计同成绩学生
  2. gitlab的日常使用
  3. Win7旗舰版禁止修改文件属性的设置方法
  4. Ubuntu 解决 pip 安装 lxml 出现 x86_64-linux-gnu-gcc 异常
  5. php htm specialchars_decode,PHP htmlspecialchars和htmlspecialchars_decode(函数)
  6. VM14 启动Ubutun16.04 黑屏,实用解决办法
  7. Linux公网渗透抓鸡实验
  8. 华为SmartKit工具下载
  9. 实战案例:抽屉自动点赞与爬取汽车之家新闻
  10. nginx: [emerg] CreateFile() “D:\项目资料\nginx-1.12.2/conf/nginx.conf“ failed (1113: No mapping for t
  11. 哈 佛 大 学 图 书 馆 训 言
  12. codeforce 460B Little Dima and Equation
  13. 新疆几十公里花海开始盛放,一株580年最老野树,开出最艳鲜花
  14. 好想与你天长地久,共度岁月
  15. Calibre与netlist后仿网表的仿真。
  16. python+气象 | 在地图背景下绘制全国站点气温分布图
  17. Linux安装Git(一条命令即可)
  18. 网络流建模汇总(转自Edelweiss)
  19. 图片截图识别文字怎么操作?这两个方法不要错过
  20. 微信官方接口检测域名是否被封|微信域名防封检测

热门文章

  1. android通过代码设置铃声_Android基础(5)—自定义View
  2. 手动对安卓系统进行分区备份和分区信息的查询.2022-01-29
  3. CPU核心数线程数、程序进程线程、并发并行的简单理解
  4. Vmware网络不可达
  5. dos命令创建(删除)文件(文件夹)的几种常见方式
  6. 优质的学校cc0高清摄影图片素材推荐,不容错过
  7. aws 安全组 acl_对AWS安全组和网络ACL进行故障排除时应了解的知识
  8. VCF变异结果文件详解
  9. C# Grasshopper自定义电池图标
  10. War3 脚本对象句柄管理