find()方法——字符串首次出现的索引位置

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

语法参考

find()方法实现查询一个字符串在其本身字符串对象中首次出现的索引位置,如起始位置从11到结束位置17之间子字符串出现的位置,如图1所示。如果没有检索到该字符串,则返回-1。

图1  find()方法示意图

find()方法的语法格式如下:

str.find(sub,start,end)

参数说明:

l  str:表示原字符串。

l  sub:表示要检索的子字符串。

l  start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索。

l  end :可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。

例如,子字符串o在字符串www.mingrisoft.com起始位置从11到结束位置17之间首次出现的位置,如图2所示。

图2  字符串首次出现的位置

    快用锦囊

锦囊1  检索邮箱地址中“@”首次出现中的位置

定义一个字符串,然后应用find()方法检索邮箱地址中首次出现“@”符号的位置索引,代码如下:

str1 = '790129881@qq.com'

print('@首次出现的位置为:',str1.find('@'))

运行程序,输出结果为:

@首次出现的位置为: 9

如果邮箱地址中没有“@”,则返回值为-1,此时可以判断邮箱地址不正确并提示用户输入正确的邮箱地址。

说明:Python的字符串对象还提供了rfind()方法,其作用与find()方法类似,只是从字符串右边开始查找。

锦囊2  提取括号内数据

日常处理数据过程中,有时需要提取括号内的数据,例如图3所示括号内的手机号。

图3  提取括号内的手机号

下面使用find()方法查找括号所在位置,然后使用切片方法提取括号内的手机号,代码如下:

str1 = '张三(13566688888)'

l1=str1.find('(')

l2=str1.find(')')

print(str1[l1+1:l2])

运行程序,结果为:

13566688888

锦囊3  从邮箱地址提取ID并将首字母大写

一般情况下,邮箱地址都是由ID和服务器地址组成,那么通过邮箱地址就可以提取到ID或服务器地址。例如,提取ID并将首字母大写,效果如图4所示。

图4  邮箱地址

下面使用find()方法查找字符串中“@”的位置,然后使用切片方法提取ID并通过capitalize()方法设置首字母大写,代码如下:

file1 = open('./tmp/email.txt', 'r')

for value1 in file1.readlines():

    l=value1.find('@')

    print(value1[0:l].capitalize())

file1.close()

运行程序,结果为:

Gcytom

Jackeer

Mingrisoft

Mrkj_2019

### 如何在 Python 中使用 `find` 方法查找字符串位置Python 中,可以通过字符串对象调用内置的 `find()` 方法来定位子字符串首次出现的位置。此方法返回指定子字符串的第一个匹配项的索引位置;如果没有找到该子字符串,则返回 `-1`。 以下是具体说明以及代码示例: #### 使用 `find()` 方法 `find()` 是一种简单而高效的方式,用于查找字符串在父字符串中的起始位置。其基本语法如下所示: ```python string.find(substring, start, end) ``` - **substring**: 需要查找的目标子字符串。 - **start** (可选): 指定搜索范围的起始索引,默认为 0。 - **end** (可选): 指定搜索范围的结束索引,默认为字符串长度。 当目标子字符串被成功找到时,`find()` 返回的是第一个匹配项的起始索引位置[^1]。 #### 示例代码 下面是一个具体的例子展示如何利用 `find()` 来获取子字符串位置: ```python s = "Hello, world!" index = s.find("world") print(f"子串 'world' 的索引位置为: {index}") # 输出:7 ``` 在这个例子中,“world” 子字符串位于原始字符串 “Hello, world!” 的第 7 位(从零开始计数)。如果尝试寻找不存在于原字符串中的子字符串,比如 `"Python"`,那么结果将是 `-1` 表明未发现任何匹配项。 另外需要注意的是,还有另一种相似的方法叫做 `rfind()` 它是从右向左进行检索并返回最后一个匹配到的子串索引值[^2]。 对于更复杂的模式匹配需求,可能还需要考虑正则表达式的应用,不过这是超出当前讨论范畴的内容了。 #### 处理异常情况 值得注意的一点是,尽管 `find()` 不会引发错误而是安全地返回 -1 当未能找到相应内容的时候,但是它的兄弟函数 `index()` 却会在找不到对应部分时报错——即抛出 ValueError 异常。因此,在不确定是否存在的情况下最好先测试一下再决定是否采用后者。 ```python try: index = s.index("universe") except ValueError as e: print(e) # 输出:substring not found ``` 以上就是关于怎样运用 Python 内置功能之一 —— `find()` 去探测特定片段所在之处的知识讲解啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙子味冰可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值