这看起来应该是相当微不足道的,但我是 Python 新手,想要以最 Pythonic 的方式来做。
我想找到与字符串中第 n 次出现的子字符串相对应的索引。|| |必须有一些与我想做的事情相当的东西,即
如何在Python中实现这一点?
mystring.find("substring", 2nd)
How can you achieve this in Python?
你可以使用
string.find
的变体来找到 Python 字符串中第 n 次出现的子字符串。但是,没有直接的方法像
mystring.find("substring", 2nd)
这样来完成。
方法如下:
1. 使用
find
进行循环:
def find_nth_occurrence(string, substring, n):
"""
此函数返回字符串中第 n 次出现的子字符串的索引。
Args:
string: 要搜索的字符串。
substring: 要搜索的子字符串。
n: 子字符串的序号。
Returns:
子字符串的第 n 次出现的索引,如果找不到则返回 -1。
"""
start = -1
for i in range(n):
start = string.find(substring, start + 1)
if start == -1:
return start
return start
# 示例用法
mystring = "This is a test string with multiple test occurrences."
substring = "test"
n = 2
index = find_nth_occurrence(mystring, substring, n)
if index != -1:
print(f"第 {n} 次出现的 '{substring}' 位于索引:{index}")
else:
print(f"'{substring}' 没有出现 {n} 次。")
此函数以迭代方式使用
find
方法来查找第 n 次出现的子字符串。它维护一个
start
索引,并在每次迭代中更新它以查找下一个出现的子字符串。
2. 使用
re.finditer
(正则表达式):
import re
def find_nth_occurrence_regex(string, substring, n):
"""
此函数使用正则表达式返回字符串中第 n 次出现的子字符串的索引。
Args:
string: 要搜索的字符串。
substring: 要搜索的子字符串。
n: 子字符串的序号。
Returns:
子字符串的第 n 次出现的索引,如果找不到则返回 -1。
"""
occurrences = list(re.finditer(substring, string))
if len(occurrences) >= n:
return occurrences[n-1].start()
else:
return -1
# 示例用法
mystring = "This is a test string with multiple test occurrences."
substring = "test"
n = 2
index = find_nth_occurrence_regex(mystring, substring, n)
if index != -1:
print(f"第 {n} 次出现的 '{substring}' 位于索引:{index}")
else:
print(f"'{substring}' 没有出现 {n} 次。")
此方法使用正则表达式中的
re.finditer
函数来查找所有出现的子字符串,然后从匹配列表中返回第 n 次出现的索引。
这些方法提供了在 Python 中查找字符串中第 n 次出现的子字符串的不同方法。可以根据自己的特定需求和编码风格选择最适合的方法。
标签:python,string,substring From: 1883980