Quero encontrar a posição (ou índice) da última ocorrência de uma certa substring em uma determinada string de entrada str
.
Por exemplo, suponha que a sequência de entrada seja str = 'hello'
e a substring seja target = 'l'
, ela deve gerar 3.
Como posso fazer isso?
str
como nome de variável. Outro nome de variável que as pessoas devem evitar em python éabc
; há um módulo chamadoabc
na API nativa.Você pode usar
rfind()
ou links do Python2:rindex()
rfind()
rindex()
A diferença é que quando a substring não é encontrada,
rfind()
retorna-1
enquantorindex()
gera uma exceçãoValueError
(link do Python2:)ValueError
.Se você não deseja verificar o
rfind()
código de retorno-1
, pode preferirrindex()
que forneça uma mensagem de erro compreensível. Caso contrário, você pode procurar por minutos em que o valor inesperado-1
vem do seu código ...Exemplo: pesquisa do último caractere de nova linha
fonte
Use o
str.rindex
métodofonte
Tente o seguinte:
fonte
A
more_itertools
biblioteca oferece ferramentas para encontrar índices de todos os caracteres ou todas as substrings .Dado
Código
Personagens
Agora existe a
rlocate
ferramenta disponível:Uma ferramenta complementar é
locate
:Substrings
Há também um
window_size
parâmetro disponível para localizar o item principal de vários itens:fonte
Não estou tentando ressuscitar uma postagem inativa, mas como ela ainda não foi publicada ...
(Foi assim que fiz antes de encontrar esta pergunta)
Explicação: Ao pesquisar a última ocorrência, na verdade você está pesquisando a primeira ocorrência na sequência invertida. Sabendo disso, fiz
s[::-1]
(que retorna uma string invertida) e depois indexei otarget
de lá. Então eu fiz,len(s) - 1 - the index found
porque queremos que o índice seja revertido (ou seja, original).Cuidado, porém! Se
target
houver mais de um caractere, você provavelmente não o encontrará na string invertida. Para corrigir isso, uselast_pos = len(s) - 1 - s[::-1].index(target[::-1])
, que procura uma versão invertida detarget
.fonte
Se você não quiser usar o rfind , isso fará o truque /
fonte
você pode usar
rindex()
function para obter a última ocorrência de um caractere na stringfonte
Método rindex () da cadeia de caracteres Python
Descrição O
método de string Python rindex () retorna o último índice em que a substring str é encontrada ou gera uma exceção se esse índice não existir, restringindo opcionalmente a pesquisa à string [beg: end].
Sintaxe A
seguir, é apresentada a sintaxe do método rindex () -
Parâmetros
str - especifica a sequência a ser pesquisada.
beg - Este é o índice inicial, por padrão é 0
len - Este é o índice final, por padrão é igual ao comprimento da string.
Valor de retorno
Este método retorna o último índice, se encontrado, gera uma exceção se str não for encontrado.
Exemplo
O exemplo a seguir mostra o uso do método rindex ().
Demonstração ao vivo
! / usr / bin / python
Quando executamos o programa acima, ele produz o seguinte resultado -
Ref: Método Python String rindex () - Tutorialspoint
fonte