Buscar todos los índices de un personaje en una cadena de Python

Muhammad Maisam Abbas 30 enero 2023
  1. Buscar todos los índices de un carácter dentro de una cadena con expresiones regulares en Python
  2. Encuentre todos los índices de un carácter dentro de una cadena con la palabra clave yield en Python
  3. Encuentre todos los índices de un carácter dentro de una cadena con comprensiones de lista en Python
Buscar todos los índices de un personaje en una cadena de Python

Este tutorial discutirá los métodos para obtener todos los índices de un carácter dentro de una cadena en Python.

Buscar todos los índices de un carácter dentro de una cadena con expresiones regulares en Python

Podemos usar la función finditer() dentro del módulo re de Python para nuestro problema específico. La función finditer() toma el patrón y la cadena como parámetros de entrada. Lee la cadena de izquierda a derecha y devuelve todos los índices donde ocurre el patrón. Podemos usar esta función con listas por comprensión para almacenar el resultado dentro de una lista en Python. El siguiente fragmento de código nos muestra cómo encontrar todos los índices de un carácter dentro de una cadena con expresiones regulares.

import re

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

Producción :

[2, 5, 13]

Usamos la función re.finditer() para iterar a través de cada carácter dentro de la cadena y encontrar todos los caracteres que coincidían con char. Devolvimos el índice i.start() de todos los caracteres que coincidían con char en forma de lista y los almacenamos dentro de índices. Al final, mostramos todos los elementos de índices.

Encuentre todos los índices de un carácter dentro de una cadena con la palabra clave yield en Python

También podemos usar la palabra clave yield dentro de una función para resolver nuestro problema específico. La palabra clave yield se utiliza para devolver múltiples valores de una función sin destruir el estado de las variables locales de esa función. Cuando se vuelve a llamar a la función, la ejecución comienza desde la declaración anterior yield. Podemos usar esta palabra clave para devolver todas las instancias de un carácter dentro de una cadena. El siguiente ejemplo de código nos muestra cómo encontrar todos los índices de un carácter dentro de una cadena con la palabra clave 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)

Producción :

[2, 5, 13]

Definimos la función find(string, char) que itera a través de cada carácter dentro de la cadena y produce el índice i si el carácter coincide con char. Mientras llamamos a la función find(), almacenamos todos los valores devueltos dentro de una lista y mostramos todos los elementos de la lista.

Encuentre todos los índices de un carácter dentro de una cadena con comprensiones de lista en Python

También podemos usar listas por comprensión para resolver nuestro problema. Las listas por comprensión se utilizan para crear nuevas listas basadas en listas previamente existentes. Podemos usar listas por comprensión para iterar a través de cada carácter dentro de la variable de cadena y devolver el índice si el carácter coincide con el carácter deseado. Las comprensiones de listas devuelven valores en forma de listas. Podemos almacenar estos valores de índice dentro de una lista y mostrar los resultados. El siguiente fragmento de código nos muestra cómo encontrar todos los índices de un carácter dentro de una cadena con listas por comprensión.

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

Producción :

[2, 5, 13]

Usamos listas por comprensión para iterar a través de cada carácter c dentro de la variable cadena y devolvimos su índice i si el carácter c es igual a nuestro carácter deseado char. Esta es la forma más sencilla y fácil de encontrar todos los índices de un carácter dentro de una cadena.

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

Artículo relacionado - Python String