Quiero encontrar la posición (o índice) de la última aparición de una determinada subcadena en una cadena de entrada dada str
.
Por ejemplo, supongamos que la cadena de entrada es str = 'hello'
y la subcadena es target = 'l'
, entonces debería generar 3.
¿Cómo puedo hacer esto?
str
como nombre de variable. Otro nombre de variable que la gente debería evitar en python esabc
; Hay un módulo llamadoabc
en la API nativa.Puede usar
rfind()
o enlaces de Python2:rindex()
rfind()
rindex()
La diferencia es cuando no se encuentra la subcadena,
rfind()
regresa-1
mientras serindex()
genera una excepciónValueError
(enlace Python2:)ValueError
.Si no desea verificar el
rfind()
código de retorno-1
, puede preferirrindex()
que le proporcione un mensaje de error comprensible. De lo contrario, puede buscar minutos de donde-1
proviene el valor inesperado dentro de su código ...Ejemplo: búsqueda del último carácter de nueva línea
fuente
Usa el
str.rindex
método.fuente
Prueba esto:
fuente
La
more_itertools
biblioteca ofrece herramientas para encontrar índices de todos los caracteres o todas las subcadenas .Dado
Código
Caracteres
Ahora hay una
rlocate
herramienta disponible:Una herramienta complementaria es
locate
:Subcadenas
También hay un
window_size
parámetro disponible para localizar el elemento principal de varios elementos:fuente
No intento resucitar una publicación inactiva, pero como aún no se ha publicado ...
(Así es como lo hice antes de encontrar esta pregunta)
Explicación: cuando busca la última aparición, realmente busca la primera aparición en la cadena invertida. Sabiendo esto, lo hice
s[::-1]
(que devuelve una cadena invertida), y luego indicétarget
desde allí. Luego lo hicelen(s) - 1 - the index found
porque queremos el índice en la cadena no invertida (es decir, original).¡Pero cuidado! Si
target
hay más de un carácter, probablemente no lo encontrará en la cadena invertida. Para solucionar esto, uselast_pos = len(s) - 1 - s[::-1].index(target[::-1])
, que busca una versión inversa detarget
.fuente
Si no quieres usar rfind, entonces este será el truco /
fuente
puede usar la
rindex()
función para obtener la última aparición de un carácter en cadenafuente
Método de Pydex String rindex ()
Descripción
Método de cadena de Python rindex () devuelve el último índice donde se encuentra la cadena de subcadena, o genera una excepción si no existe dicho índice, opcionalmente restringiendo la búsqueda a la cadena [beg: end].
Sintaxis
Siguiente es la sintaxis para el método rindex () -
Parámetros
str: especifica la cadena a buscar.
beg - Este es el índice inicial, por defecto es 0
len - Este es el índice final, por defecto es igual a la longitud de la cadena.
Valor de retorno
Este método devuelve el último índice si se encuentra, de lo contrario genera una excepción si no se encuentra str.
Ejemplo
El siguiente ejemplo muestra el uso del método rindex ().
Demo en vivo
! / usr / bin / python
Cuando ejecutamos el programa anterior, produce el siguiente resultado:
Ref: Método de Python String rindex () - Tutorialspoint
fuente