Lisandro
(usa Arch Linux)
Enviado em 19/10/2018 - 19:44h
Olá Paulo, saudações.
Para entender o funcionamento é importante que você entenda de fatiamento de strings, então caso não saiba do que estou falando este é o primeiro ponto a estudar.
Bem, embora a sintaxe de uso seja bem semelhante os resultados de cada método são bem diferentes.
No caso o método
find retorna um número inteiro positivo, que é o índice da primeira posição na string onde está o valor procurado, ou o inteiro negativo "-1" no caso de não localizar o valor da busca.
A sintaxe é: str.find(sub[, start[, end]] )
Onde "str" é a string toda onde dejejamos fazer a pesquisa, "sub" é a substring (trecho) que estamos procurando dentro da string e os parâmetros opcionais "start" e "end" delimitam a fatia da string onde a busca será feita, se omitidos começará no início da mesma até localizar a primeira ocorrência.
Exemplo:
str = "Estou procurando em um texto por palavras chave, quero saber se elas existem e onde no texto (string) começam. Para isso posso usar o método find"
print(str.find("texto"))
print(str.find("Texto"))
print(str.find("texto", 24, 100))
Resultado:
23
-1
87
Ou seja, a primeira ocorrência de "texto" começa com a letra "t" na posição "23", não existe na string a palavra "Texto" com "T" maiúsculo, então e resposta é "-1" e por fim para localizar a segunda ocorrência procuramos em uma fatia posterior à primeira ocorrência e localizamos na posição "87".
Vejamos agora o funcionamento do método
startswith. O método retorna "True" (verdadeiro) se o valor procurado está
no começo do trecho onde a busca é efetuada ou "False" se o valor não estiver no começo.
A sintaxe é: str.startswith(sub[, start[, end]] )
Exemplo:
str = "Estou procurando em um texto por palavras chave, quero saber se elas existem no início do texto (string). Para isso posso usar o método startswith"
print(str.startswith("texto"))
print(str.startswith("Texto"))
print(str.startswith("texto", 23, 100))
print(str.startswith("Texto", 23, 100))
print(str.startswith("texto", 90, 100))
Resultado:
False
False
True
False
True
Podemos ver que a string não começa com "texto" nem com "Texto" e por isso o resultado é "False", depois vemos que a fatia que começa em 23 e vai até 100 começa com "texto" e obtemos um "True", mas o mesmo trecho não começa com "Texto" (T maiúsculo), então recebemos um "False" e por fim recebemos um "True" quando testamos se a fatia de 90 até 100 começa com o valr procurado.
Espero que os exemplos tenham esclarecido.
Abraço