欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > python中的find()和index()方法的使用——查找字符在字符串中的索引位置,简单实用教学!!!

python中的find()和index()方法的使用——查找字符在字符串中的索引位置,简单实用教学!!!

2025/6/6 14:33:54 来源:https://blog.csdn.net/m0_59470317/article/details/147017994  浏览:    关键词:python中的find()和index()方法的使用——查找字符在字符串中的索引位置,简单实用教学!!!

文章目录

  • 前言
  • 1、find()方法的使用
  • 2、index()方法的使用
  • 3、扩展:查找所有匹配的索引
  • 4、find() 和 index() 的区别
  • 5、关键注意事项及总结

前言

在python中我们在处理字符串类型的数据时,有时需要获取字符串中某个字符的索引以确定其位置,方便进行一些计算和统计。而在Python中正好内置了两种方法find()和index()可以帮助我们完成这种操作,接下来我将针对这两种方法,进行基础教学,并在此之上扩展一些使用技巧。

1、find()方法的使用

语法:字符串.find(sub,start,end])
返回子字符串第一次出现的索引,若未找到则返回 -1。

1、参数说明:

  • sub:要查找的子字符串(必填)。

  • start(可选):搜索的起始索引(默认从 0 开始)。

  • end(可选):搜索的结束索引(默认为字符串末尾,不包含此位置)。

2、方法运行机制:

  1. 从左到右搜索字符串。

  2. 当有多个符合条件时,只返回第一个匹配的子字符串的起始索引。

  3. 未找到时返回 -1。

3、案例演示:

案例1:基础查询

# 原始字符串
s = "Hello, welcome to Python!"# 查找子字符串 "wel" 的索引
index = s.find("wel")
print(index)  # 输出: 7


案例2:限制索引范围查询

# 原始字符串
s = "Hello, welcome to Python!"# 查找字符 "o"(从索引 5 开始搜索)
index1 = s.find("o",5)
print(index1)  # 输出: 11# 查找字符 "o"(从索引 5 开始搜索,到索引 10 结束搜索)
index2 = s.find('o',5,10)
print(index2)  # 输出: -1


案例3:未知字符查询

# 原始字符串
s = "Hello, welcome to Python!"# 查找不存在的子字符串 "java"
index = s.find("java")
print(index)  # 输出: -1

2、index()方法的使用

语法:str.index(sub,start, end)
返回子字符串第一次出现的索引,若未找到则抛出 ValueError 异常。

1、参数说明:

  • sub:要查找的子字符串(必填)。

  • start(可选):搜索的起始索引(默认从 0 开始)。

  • end(可选):搜索的结束索引(默认为字符串末尾,不包含此位置)。

2、方法运行机制:

  1. 从左到右搜索字符串。

  2. 当有多个符合条件时,只返回第一个匹配的子字符串的起始索引。

  3. 未找到时直接抛出异常。

3、案例演示

案例1:基础查询

# 原始字符串
s = "Hello, welcome to Python!"# 查找子字符串 "wel" 的索引
index = s.index("wel")
print(index)  # 输出: 7


案例2:限制索引范围查询

# 原始字符串
s = "Hello, welcome to Python!"# 查找字符 "o"(从索引 5 开始搜索)
index1 = s.index("o",5)
print(index1)  # 输出: 11# 查找字符 "o"(从索引 5 开始搜索,到索引 10 结束搜索)
try:index2 = s.index('o',5,10)
except ValueError as e:print(f"错误信息: {e}")  # 输出: substring not found
# 因为index未查询到目标字符会导致程序报错,这里通过异常处理防止程序崩溃


案例3:未知字符查询

# 原始字符串
s = "Hello, welcome to Python!"try:# 查找不存在的子字符串 "java"index = s.index("java")
except ValueError as e:print(f"错误信息: {e}")  # 输出: substring not found

3、扩展:查找所有匹配的索引

由于find()index()方法都只能返回匹配到的第一个字符的索引,因此我们需要借助循环来找到字符所有匹配的位置索引。

案例演示:

方法1:使用find()进行查找

# 原始字符串
s = "Python is fun, Python is powerful"
# 需要查找的字符
sub = "Python"
# 存放字符匹配的所有索引
indices = []
# 确定起始索引位置
start = 0# 通过循环查询所有匹配的索引
while True:index = s.find(sub, start)if index == -1:break# 将匹配到的索引放入列表indices.append(index)start = index + 1  # 移动起始位置继续查找print(f"所有 '{sub}' 的索引为: {indices}")  # 输出: [0, 15]


方法2:使用index()进行查找

# 原始字符串
s = "Python is fun, Python is powerful"
# 需要查找的字符
sub = "Python"
# 存放字符匹配的所有索引
indices = []
# 确定起始索引位置
start = 0# 通过循环查询所有匹配的索引
while True:try:index = s.index(sub, start)except:break# 将匹配到的索引放入列表indices.append(index)start = index + 1  # 移动起始位置继续查找print(f"所有 '{sub}' 的索引为: {indices}")  # 输出: [0, 15]

方法3:使用enumerate()方法进行查找

# 原始字符串
s = "hello world"
# 需要查询的字符
char = "o"# 结合列表推导式,查询所有匹配的索引
indices = [i for i, c in enumerate(s) if c == char]
print(indices)  # 输出: [4, 7]

4、find() 和 index() 的区别

方法未找到时的行为适用场景
find()返回 -1安全查找,无需处理异常
index()抛出 ValueError 异常明确知道子字符串存在时使用

5、关键注意事项及总结


1、 大小写敏感:

这两个方法区分大小写。例如 find(“A”) 和 find(“a”) 结果不同。

s = "Apple"
print(s.find("a"))  # 输出: -1


2、子字符串长度:

可以查找任意长度的子字符串,例如 find(“Py”) 会返回起始索引。

s = "Python"
print(s.find("Py"))  # 输出: 0


3、参数范围:

start 和 end 可以是负数,但会被解释为从字符串末尾倒数。

s = "abcdef"
print(s.find("c", -5))  # 输出: 2 (这里-5 相当于索引 1)

总结:

  • 优先使用find():避免异常处理,适合不确定子字符串是否存在的情况。

  • 明确存在时用index():若确定子字符串存在,可以用 index() 直接获取索引。

  • 批量查找find()index()结合循环可以查找所有匹配位置,也可以通过enumerate()方法进行查找。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词