¿Qué es str.rfind() en Python?: sus diferencias con str.find()

| Última modificación: 3 de diciembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Si ya estás familiarizado con str.find, es porobable que qué es lo que hace rfind que no tenga str.find. En el artículo a continuación vamos a desentrañar todos los secretos de esta función, qué es y cómo funciona.

str.rfind() en python

¿Qué es str.rfind()?

El método str.rfind() en Python es utilizado para encontrar la última ocurrencia de una subcadena dentro de una cadena en python. A diferencia de str.find(), que devuelve la primera aparición, str.rfind() va a devolver la posición de la última vez que se encuentra el valor que buscas.

La sintaxis de str.rfind() es bastante similar a la de str.find():

string.rfind(value, start, end)
  • value: La subcadena que estás buscando.
  • start (opcional): El índice desde donde se iniciará la búsqueda. El valor predeterminado es 0, lo que significa que busca desde el inicio.
  • end (opcional): El índice hasta donde se detendrá la búsqueda. El valor predeterminado es hasta el final de la cadena.

Si no se encuentra el valor, str.rfind() devuelve -1.

Para este ejemplo explicativo imagina que que tienes la cadena “Mi casa, su casa.” y quieres encontrar la última aparición de la palabra “casa”:

txt = "Mi casa, su casa."
posicion = txt.rfind("casa")
print(posicion)

Salida:

13

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

En este ejemplo, str.rfind() devuelve 13, ya que la última aparición de “casa” en el texto está en esa posición.

Diferencias entre str.rfind() y str.find()

Aunque ambos métodos (str.find() y str.rfind()) sirven para encontrar subcadenas dentro de una cadena, hay unas diferencia entre ellos que es importante traer a colación:

str.find()str.rfind()
PropósitoEncuentra la primera aparición de una subcadena en una cadena.Encuentra la última aparición de una subcadena en una cadena.
Valor de retorno si no se encuentraDevuelve -1.Devuelve -1.
Excepción si no se encuentraNo lanza ninguna excepción. Devuelve -1.No lanza ninguna excepción. Devuelve -1.
BúsquedaEmpieza la búsqueda desde el principio de la cadena.Empieza la búsqueda desde el final de la cadena.
Uso comúnIdeal para encontrar la primera vez que ocurre una subcadena.Ideal para encontrar la última vez que ocurre una subcadena.
Parámetros opcionalesstart (índice de inicio) y end (índice de fin).start (índice de inicio) y end (índice de fin).
Comportamiento con múltiples ocurrenciasDevuelve la primera ocurrencia de la subcadena.Devuelve la última ocurrencia de la subcadena.

Por ejemplo:

txt = "Python es genial, Python es divertido"

# Usando str.find()
print(txt.find("Python")) # Salida: 0 (primer "Python")

# Usando str.rfind()
print(txt.rfind("Python")) # Salida: 22 (último "Python")

¿En qué contextos podemos usar str.find()?

El uso de str.rfind() es especialmente útil en los siguientes escenarios:

  • Buscar la última ocurrencia de una palabra: Si necesitas encontrar la última vez que aparece una palabra o frase en un texto, str.rfind() es la función que debes usar. Por ejemplo, si estás buscando la última vez que se usa un término clave en un registro de texto o en un archivo:
txt = "Python es genial, Python es divertido"
ultima_ocurrencia = txt.rfind("Python")
print(ultima_ocurrencia) # Salida: 22
  • Validar si un carácter o palabra aparece más de una vez: En algunos casos, puede ser importante saber si un carácter o subcadena aparece más de una vez. Usar str.rfind() te permitirá encontrar la última posición de la subcadena y determinar si aparece más de una vez:
txt = "buscando una palabra"
posicion = txt.rfind("palabra")
if posicion != -1:
print(f"Se encontró 'palabra' en la posición {posicion}")
else:
print("No se encontró la palabra")

¿Qué tienen que ver este método y str.rindex()?

Un método que es similar a str.rfind() es str.rindex(). La principal diferencia entre ellos es que si no se encuentra la subcadena, str.rfind() devuelve -1, mientras que str.rindex() lanza una excepción ValueError:

txt = "Python es genial"
print(txt.rfind("Java")) # Salida: -1
print(txt.rindex("Java")) # Lanza un ValueError

¿Cómo aplicar esta función?

  1. Buscar el último carácter en una cadena: Si estás interesado en encontrar la última aparición de un carácter específico, str.rfind() es perfecto para este caso.
  2. Extraer texto desde una posición específica: Una vez que conoces la última posición de una subcadena, puedes usarla para extraer una sección del texto.
txt = "Esto es Python, Python es genial."
ultima_posicion = txt.rfind("Python")
print(txt[ultima_posicion:]) # Salida: "Python es genial."
  1. Procesamiento de archivos o logs: Si necesitas leer archivos o registros y encontrar la última ocurrencia de un término, str.rfind() te permitirá hacerlo de manera rápida y eficiente.

Si quieres seguir aprendiendo sobre tecnología, no dudes en unirte a nuestro bootcamp de programación desde cero para personas principiantes que apenas estén iniciando en el mundo de la programación. Allí aprenderás todo lo necesario para convertirte en programador junior y conseguir el empleo de tus sueños. ¡Únete ahora!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a Programar desde Cero

Full Stack Jr. Bootcamp

Apúntate y consigue uno de los perfiles más demandados con Python en solo 4 meses.