在 Python 字符串中查找字符的所有索引

Muhammad Maisam Abbas 2023年1月30日
  1. 在 Python 中使用正则表达式查找字符串中字符的所有索引
  2. 在 Python 中使用 yield 关键字查找字符串中字符的所有索引
  3. 在 Python 中使用列表推导式查找字符串中字符的所有索引
在 Python 字符串中查找字符的所有索引

本教程将讨论在 Python 中获取字符串中字符的所有索引的方法。

在 Python 中使用正则表达式查找字符串中字符的所有索引

我们可以在 Python 的 re 模块中使用 finditer() 函数 来解决我们的特定问题。finditer() 函数将模式和字符串作为输入参数。它从左到右读取字符串并返回模式出现的所有索引。我们可以将此函数与列表推导一起使用,以将结果存储在 Python 中的列表中。以下代码片段向我们展示了如何使用正则表达式查找字符串中字符的所有索引。

import re

string = "This is a string"
char = "i"
indices = [i.start() for i in re.finditer(char, string)]
print(indices)

输出:

[2, 5, 13]

我们使用 re.finditer() 函数遍历 string 中的每个字符,并找到与 char 匹配的所有字符。我们以列表的形式返回与 char 匹配的所有字符的索引 i.start(),并将它们存储在 indices 中。最后,我们显示了 indices 的所有元素。

在 Python 中使用 yield 关键字查找字符串中字符的所有索引

我们还可以在函数中使用 yield 关键字来解决我们的特定问题。yield 关键字用于从函数返回多个值,而不会破坏该函数的局部变量的状态。再次调用该函数时,将从前一个 yield 语句开始执行。我们可以使用此关键字返回字符串中某个字符的所有实例。以下代码示例向我们展示了如何使用 yield 关键字在字符串中查找字符的所有索引。

def find(string, char):
    for i, c in enumerate(string):
        if c == char:
            yield i


string = "This is a string"
char = "i"
indices = list(find(string, char))
print(indices)

输出:

[2, 5, 13]

我们定义了 find(string, char) 函数,该函数遍历 string 中的每个字符,如果该字符与 char 匹配,则生成索引 i。在调用 find() 函数时,我们将所有返回值存储在一个列表中并显示列表中的所有元素。

在 Python 中使用列表推导式查找字符串中字符的所有索引

我们还可以使用列表推导式来解决我们的问题。列表推导用于基于先前存在的列表创建新列表。我们可以使用列表推导来遍历字符串变量中的每个字符,如果该字符与所需字符匹配,则返回索引。列表推导式以列表的形式返回值。我们可以将这些索引值存储在一个列表中并显示结果。以下代码片段向我们展示了如何使用列表推导式查找字符串中某个字符的所有索引。

string = "This is a string"
char = "i"
indices = [i for i, c in enumerate(string) if c == char]
print(indices)

输出:

[2, 5, 13]

我们使用列表推导式遍历 string 变量中的每个字符 c,如果字符 c 等于我们想要的字符 char,则返回其索引 i。这是在字符串中查找字符的所有索引的最简单和最简单的方法。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

相关文章 - Python String