首页 > 编程问答 >查找字符串中第 n 次出现的子字符串

查找字符串中第 n 次出现的子字符串

时间:2024-07-21 11:51:46浏览次数:13  
标签:python string substring

这看起来应该是相当微不足道的,但我是 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

相关文章