目录
Find index of first occurrence of substring in Python String
- 在 Python String 中查找 First occurrence of substring 的索引
- 在 Python 字符串中查找最后一次出现的子字符串的索引
- 在 Python 中查找字符串中第 N 次出现的子字符串
- 在 Python 中查找第一个非空白字符的索引
查找 Python 字符串中第一次出现的子字符串的索引
使用该str.find()
方法查找字符串中子字符串第一次出现的索引。
该str.find()
方法返回字符串中提供的子字符串第一次出现的索引,或者-1
如果子字符串不存在于字符串中。
my_str = 'apple, avocado' index = my_str.find('a') print(index) # 👉️ 0
str.find方法返回字符串中提供的子字符串第一次出现的索引。
print('test'.find('t')) # 👉️ 0
-1
如果在字符串中找不到子字符串,则该方法返回。您可以使用语句处理字符串中不存在子字符串的情况if/else
。
my_str = 'apple, avocado' index = my_str.find('a') if index != -1: print(my_str[index]) # 👉️ 'a' else: raise IndexError('Provided substring not in string')
查找第一次出现的索引使用str.index
或者,您可以使用该str.index()
方法。
my_str = 'apple, avocado' index = my_str.index('a') print(index) # 👉️ 0
str.index方法返回字符串中提供的子字符串第一次出现的
索引。
ValueError
如果在字符串中找不到子字符串,则该方法会引发 a 。
my_str = 'apple, avocado' # ⛔️ ValueError: substring not found index = my_str.index('z')
str.index()
方法与 非常相似str.find()
,但它会引发ValueError
,而不是-1
在字符串中不存在子字符串时返回。如果您需要以任何方式处理错误,您可以使用
try/except 块。
my_str = 'apple, avocado' try: index = my_str.index('z') except ValueError: # 👇️ this runs print('provided substring not in string')
pass
如果您只想忽略错误,可以使用该语句。
my_str = 'apple, avocado' try: index = my_str.index('z') except ValueError: # 👇️ this runs pass
pass语句什么都不做,当语法上需要语句但程序不需要任何操作时使用。
查找 Python 字符串中最后一次出现的子字符串的索引
使用该str.rfind()
方法查找字符串中子字符串的最后一次出现。
该rfind()
方法返回在字符串中找到提供的子字符串的最高索引。
my_str = 'apple, apricot' index = my_str.rfind('a') print(index) # 👉️ 7
我们使用该str.rfind()
方法获取字符串中最后一次出现的字符的索引。
str.rfind
方法返回字符串中找到提供的子字符串的最高索引。
print('test'.rfind('t')) # 👉️ 3
-1
如果子字符串不包含在字符串中,则该方法返回。
您可以使用语句处理字符串中不存在子字符串的情况if/else
。
my_str = 'apple, apricot' index = my_str.rfind('a') if index != -1: result = my_str[index:] else: result = my_str print(result) # 👉️ 'apricot'
您还可以在块中引发异常else
。
my_str = 'apple, apricot' index = my_str.rfind('Z') if index != -1: result = my_str[index:] else: # 👇️ this runs raise IndexError('Provided character not in string')
查找最后一次出现的索引使用str.rindex
或者,您可以使用该str.rindex()
方法。
my_str = 'apple, apricot' index = my_str.rindex('a') print(index) # 👉️ 7
str.rindex
方法返回字符串中找到提供的子字符串的最高索引。
print('test'.rindex('t')) # 👉️ 3
ValueError
当在字符串中找不到提供的子字符串时,该方法将引发。
my_str = 'apple, apricot' # ⛔️ ValueError: substring not found index = my_str.rindex('z')
str.rindex()
方法与 非常相似,但它会引发,而不是在字符串中不存在子字符串时返回。 str.rfind()
ValueError
-1
try/except
如果您需要以任何方式处理错误,您可以使用块。
my_str = 'apple, apricot' try: index = my_str.rindex('z') except ValueError: # 👇️ this runs print('specified substring not in string')
pass
如果您只想忽略错误,可以使用该语句。
my_str = 'apple, apricot' try: index = my_str.rindex('z') except ValueError: # 👇️ this runs pass
pass语句什么都不做,当语法上需要语句但程序不需要任何操作时使用。
在Python中查找String中第N次出现的Substring
要查找字符串中第 N 次出现的子字符串:
- 使用该
str.find()
方法查找第一个匹配项。 - 使用
while
循环迭代直到找到第 N 次出现。 - 使用
str.find()
带有start
索引的方法来查找第 N 次出现。
def find_nth_occurrence(string, substring, n): start = string.find(substring) while start >= 0 and n > 1: start = string.find(substring, start + 1) n -= 1 return start print(find_nth_occurrence('one one one', 'one', 2)) # 👉️ 4 print(find_nth_occurrence('one one one', 'one', 3)) # 👉️ 8
我们使用该str.find()
方法来查找字符串中子字符串的第一次出现。
str.find方法返回字符串中提供的子字符串第一次出现的索引。
print('one one one'.find('one')) # 👉️ 0
-1
如果在字符串中找不到子字符串,则该方法返回。
该str.find()
方法可以选择传递第二个参数——start
索引。
start
指定了索引,该find()
方法将开始在指定索引处查找子字符串。我们的while
循环检查start
值是否大于或等于,0
因为如果子字符串不包含在字符串中则str.find()
返回。-1
while start >= 0 and n > 1: start = string.find(substring, start + 1) n -= 1
我们还检查是否n
大于,1
因为如果消费者需要第一次出现的索引,则无需迭代。
在每次迭代中,我们将start
索引增加 以1
查找下一次出现并n
减少1
.
如果字符串中第 N 次出现的子字符串不存在,-1
则返回。
def find_nth_occurrence(string, substring, n): start = string.find(substring) while start >= 0 and n > 1: start = string.find(substring, start + 1) n -= 1 return start print(find_nth_occurrence('one one one', 'one', 10)) # 👉️ -1
我们仅将start
索引递增以1
找到下一个匹配项,因此该函数可能会返回字符串中子字符串第 N 次重叠出现的索引。
def find_nth_occurrence(string, substring, n): start = string.find(substring) while start >= 0 and n > 1: start = string.find(substring, start + 1) n -= 1 return start # 👇️ 4 print( find_nth_occurrence('one one one one', 'one one', 2) )
查找字符串中第 N 个不重叠的事件
如果需要获取子字符串第 N 次非重叠出现的索引,则在确定索引时使用子字符串的长度start
。
def find_nth_occurrence(string, substring, n): start = string.find(substring) while start >= 0 and n > 1: start = string.find(substring, start + len(substring)) n -= 1 return start # 👇️ 8 print( find_nth_occurrence('one one one one', 'one one', 2) )
我们没有添加1
到start
索引,而是添加了子字符串的长度。
使用 str.split() 在 String 中找到第 N 次出现的 Substring
这是一个两步过程:
- 使用该
str.split()
方法将字符串拆分 N 次。 - 从字符串的长度中减去子字符串的长度和列表最后一个元素的长度。
def find_nth_occurrence(string, substring, n): parts = string.split(substring, n) print(parts) if len(parts) <= n: return -1 return len(string) - len(substring) - len(parts[-1]) print(find_nth_occurrence('one two one two one', 'one', 2)) # 👉️ 8 print(find_nth_occurrence('one two one two one', 'one', 3)) # 👉️ 16
我们使用该str.split()
方法将一个字符串最多拆分 N 次。
str.split ()方法使用分隔符将字符串拆分为子字符串列表。
该方法采用以下 2 个参数:
姓名 | 描述 |
---|---|
分隔器 | 在每次出现分隔符时将字符串拆分为子字符串 |
最大分裂 | 最多maxsplit 完成拆分(可选) |
# 👇️ ['', ' two ', ' two one'] print('one two one two one'.split('one', 2))
我们只在子字符串上将字符串拆分两次。
列表中的最后一项包含字符串的其余部分。
如果列表包含少于或等于N
项,则子字符串未在字符串中包含 N 次,我们返回-1
。
def find_nth_occurrence(string, substring, n): parts = string.split(substring, n) print(parts) if len(parts) <= n: return -1 return len(string) - len(substring) - len(parts[-1])
否则,我们从字符串的长度中减去子字符串的长度和字符串剩余部分的长度,以获得第 N 次出现的索引。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: