在Python中查找子字符串索引的5种方法

在Python中查找字符串中子字符串索引的5种方法 (5 Ways to Find the Index of a Substring in Strings in Python)

  1. str.find()

    str.find()

  2. str.rfind()

    str.rfind()

  3. str.index()

    str.index()

  4. str.rindex()

    str.rindex()

  5. re.search()

    re.search()

str.find() (str.find())

str.find() returns the lowest index in the string where the substring sub is found within the slice s[start:end]. It returns -1 if the sub is not found.start and end are optional arguments.

str.find()返回在切片s[start:end]找到子字符串sub的字符串中的最低索引。 如果找不到该子项,则返回-1startend是可选参数。

str.find(sub,start,end)

例子1.使用str.find()方法 (Example 1. Using str.find() method)

Image for post
Photo by the author
作者照片

The string is banana.

线是banana

The substring is an.

该子是an

The substring occurs two times in the string.

子字符串在字符串中出现两次。

str.find(“an”) returns the lowest index of the substring an.

str.find(“an”)返回子字符串an的最低索引。

s1="banana"print (s1.find("an"))#Output:1

例子2.使用str.find()方法和提到的start参数 (Example 2. Using str.find() method with the start parameter mentioned)

The substring is an.

该子是an

The start parameter is 2. It will start searching the substring an from index 2.

起始参数为2 。 它将开始从索引2搜索子字符串an

s1="banana"print (s1.find("an",2))#Output:3

例子3.如果没有找到子字符串,它将返回-1 (Example 3. If the substring is not found, it will return -1)

The substring is ba.

子字符串是ba

The start parameter is 1 and the stop parameter is 5. It will start searching the substring from index 1 to index 5 (excluded).

起始参数为1 ,终止参数为5 。 它将开始搜索从索引1到索引5(不包括)的子字符串。

Since the substring is not found in the string within the given index, it returns -1.

由于在给定索引的字符串中找不到子字符串,因此它返回-1

s1="banana"print (s1.find("ba",1,5))#Output:-1

2. str.rfind() (2. str.rfind())

str.rfind() returns the highest index in the string where the substring sub is found within the slice s[start:end]. It returns -1 if the sub is not found.start and end are optional arguments.

str.rfind()返回在slice s[start:end]找到子字符串sub的字符串中的最高索引。 如果找不到该子项,则返回-1startend是可选参数。

str.rfind(sub,start,end)

例子1.使用str.rfind()方法 (Example 1. Using str.rfind() method)

Image for post
Photo by the author
作者照片

The string is banana.

线是banana

The substring is an.

该子是an

The substring occurs two times in the string.

子字符串在字符串中出现两次。

str.find(“an”) returns the highest index of the substring an.

str.find(“an”)返回子字符串an的最高索引。

s1="banana"print (s1.rfind("an"))#Output:3

例子2.使用str.rfind()方法并提到开始和结束参数 (Example 2. Using str.rfind() method with the start and end parameters mentioned)

The substring is an.

该子是an

The start and end parameters are 1 and 4, respectively. It will start searching the substring from index 1 and index 4 (excluded).

startend参数分别为14 。 它将开始从索引1和索引4(排除)中搜索子字符串。

s1="banana"print (s1.rfind("an",1,4))#Output:1

例子3.如果没有找到子字符串,它将返回-1 (Example 3. If the substring is not found, it will return -1)

The substring is no.

子字符串为no

Since the substring is not found in the string, it returns -1.

由于在字符串中找不到子字符串,因此它返回-1

s1="banana"print (s1.rfind("no"))#Output:-1

3. str.index() (3. str.index())

Similarly to find(), str.index() returns the lowest index of the substring found in the string. It raises a ValueError when the substring is not found.

find()类似, str.index()返回 字符串中找到的子字符串的最低索引。 当找不到子字符串时,它将引发ValueError

例子1.使用str.index()方法 (Example 1. Using str.index() method)

s1="banana"print (s1.index("an"))#Output:1

例子2.在给定start和end参数的情况下使用str.index()方法 (Example 2. Using str.index() method with the start and end parameters given)

s1="banana"print (s1.index("an",2,6))#Output:3

例子3.如果没有找到子字符串,它将引发一个ValueError (Example 3. If the substring is not found, it raises a ValueError)

s1="banana"print (s1.index("no"))#Output:ValueError: substring not found

4. str.rindex() (4. str.rindex())

Similarly to find(), str.rindex() returns the highest index of the substring found in the string. It raises a ValueError when the substring is not found.

find()类似, str.rindex()返回在字符串中找到的子字符串的最高索引。 当找不到子字符串时,它将引发ValueError

例子1.使用str.rindex()方法 (Example 1. Using str.rindex() method)

s1="banana"print (s1.rindex("an"))#Output:3

例子2.在给定start和end参数的情况下使用str.index()方法 (Example 2. Using str.index() method with the start and end parameters given)

s1="banana"print (s1.rindex("an",0,4))#Output:1

例子3.如果没有找到子字符串,它将引发一个ValueError (Example 3. If the substring is not found, it raises a ValueError)

s1="banana"print (s1.rindex("no"))#Output:ValueError: substring not found

5. re.search() (5. re.search())

re.search(pattern, string, flags=0)

“Scan through string looking for the first location where the regular expression pattern produces a match, and return a corresponding match object. Return None if no position in the string matches the pattern; note that this is different from finding a zero-length match at some point in the string.” — Python’s official documentation

“扫描字符串以查找正则表达式模式产生匹配项的第一个位置,然后返回相应的匹配对象。 如果字符串中没有位置与模式匹配,则返回None否则,返回None 。 请注意,这不同于在字符串中的某个位置找到零长度匹配。” — Python的官方文档

  • re.search (pattern, string): We have to mention the pattern to be searched in the string.

    re.search (模式,字符串):我们不得不提一下pattern中要搜索string

  • The return type matches the object that contains the starting and ending index of that pattern (substring).

    返回类型与包含该模式(子字符串)的开始和结束索引的对象匹配。
  • We can find the start and end indices from the match object using match.start() and match.end().

    我们可以使用match.start()match.end()从match对象中找到startend索引。

Match.start([group])Match.end([group])

“Return the indices of the start and end of the substring matched by group; group defaults to zero (meaning the whole matched substring). Return -1 if group exists but did not contribute to the match.” — Python’s documentation

“返回分组匹配的子字符串的开始和结束的索引; 默认为零(表示整个匹配的子字符串)。 如果存在但没有参与比赛,则返回-1 。” — Python的文档

  • We can get the start and end indices in tuple format using match.span().

    我们可以使用match.span()获得元组格式的startend索引。

Match.span([group])

“For a match m, return the 2-tuple (m.start(group), m.end(group)). Note that if group did not contribute to the match, this is (-1, -1). group defaults to zero, the entire match.” — Python’s documentation

“对于匹配项m ,返回2元组(m.start(group), m.end(group)) 。 请注意,如果group对匹配没有贡献,则为(-1, -1)默认为零,即整个匹配。” — Python的文档

例子1.使用re.search() (Example 1. Using re.search())

示例2.如果在字符串中未找到子字符串,则返回None (Example 2. If a substring is not found in the string, it returns None)

import re
string = 'banana'pattern = 'no'match=(re.search(pattern, string))#Returns match objectprint (match)#Output: None

结论 (Conclusion)

  • Python 3.8.1 is used.

    使用Python 3.8.1。
  • str.find(), str.rfind() — Returns -1 when a substring is not found.

    str.find()str.rfind() —在找不到子字符串时返回-1

  • str.index(),str.rindex() — Raises a ValueError when a substring is not found.

    str.index()str.rindex() —在找不到子字符串时引发ValueError

  • re.search() — Returns None when a substring is not found.

    re.search() —如果找不到子字符串,则返回None

  • str.find(), str,index() — Returns the lowest index of the substring.

    str.find()str,index() —返回子字符串的最低索引。

  • str.rfind(), str.rindex() — Returns the highest index of the substring.

    str.rfind()str.rindex() —返回子字符串的最高索引。

  • re.search() — Returns the match object that contains the starting and ending indices of the substring.

    re.search() —返回包含子字符串的开始和结束索引的匹配对象。

资源(Python文档) (Resources (Python Documentation))

翻译自: https://medium.com/better-programming/5-ways-to-find-the-index-of-a-substring-in-python-13d5293fc76d

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值