Respuestas:
Puede usar rfind()o enlaces de Python2:rindex()
rfind() rindex()
>>> s = 'Hello StackOverflow Hi everybody'
>>> print( s.rfind('H') )
20
>>> print( s.rindex('H') )
20
>>> print( s.rfind('other') )
-1
>>> print( s.rindex('other') )
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
La diferencia es cuando no se encuentra la subcadena, rfind()regresa -1mientras se rindex()genera una excepción ValueError(enlace Python2:) ValueError.
Si no desea verificar el rfind()código de retorno -1, puede preferir rindex()que le proporcione un mensaje de error comprensible. De lo contrario, puede buscar minutos de donde -1proviene el valor inesperado dentro de su código ...
>>> txt = '''first line
... second line
... third line'''
>>> txt.rfind('\n')
22
>>> txt.rindex('\n')
22
La more_itertoolsbiblioteca ofrece herramientas para encontrar índices de todos los caracteres o todas las subcadenas .
Dado
import more_itertools as mit
s = "hello"
pred = lambda x: x == "l"
Código
Caracteres
Ahora hay una rlocateherramienta disponible:
next(mit.rlocate(s, pred))
# 3
Una herramienta complementaria es locate:
list(mit.locate(s, pred))[-1]
# 3
mit.last(mit.locate(s, pred))
# 3
Subcadenas
También hay un window_sizeparámetro disponible para localizar el elemento principal de varios elementos:
s = "How much wood would a woodchuck chuck if a woodchuck could chuck wood?"
substring = "chuck"
pred = lambda *args: args == tuple(substring)
next(mit.rlocate(s, pred=pred, window_size=len(substring)))
# 59
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)
s = "hello"
target = "l"
last_pos = len(s) - 1 - s[::-1].index(target)
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é targetdesde allí. Luego lo hice len(s) - 1 - the index foundporque queremos el índice en la cadena no invertida (es decir, original).
¡Pero cuidado! Si targethay más de un carácter, probablemente no lo encontrará en la cadena invertida. Para solucionar esto, use last_pos = len(s) - 1 - s[::-1].index(target[::-1]), que busca una versión inversa de target.
puede usar la rindex()función para obtener la última aparición de un carácter en cadena
s="hellloooloo"
b='l'
print(s.rindex(b))
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 () -
str.rindex(str, beg=0 end=len(string))
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
str1 = "this is string example....wow!!!";
str2 = "is";
print str1.rindex(str2)
print str1.index(str2)
Cuando ejecutamos el programa anterior, produce el siguiente resultado:
5
2
strcomo nombre de variable. Otro nombre de variable que la gente debería evitar en python esabc; Hay un módulo llamadoabcen la API nativa.