AD 17
COMO INDEXAR E FATIAR STRINGS
Uma string em Python é uma sequência composta por um ou mais
caracteres individuais que podem consistir em letras, números, caracteres de
espaço em branco ou símbolos;
Como uma string é uma sequencia, ela pode ser acessada da
mesma maneira que outros tipos de dados baseados em sequencias, através de
indexação e fatiamento;
Como o tipo de dado de lista possuem itens que correspondem
a um número de índice, cada um dos caracteres de uma string também corresponde
a um número de índice, começando com o numero de índice 0;
=> Para a string "Olá Mundo" o detalhamento dos
índices fica assim:
Olá Mundo!
0123456789
A primeira letra começa no índice 0 e a string termina no
índice 9 com o símbolo de "!"
O fato de cada caractere em uma string Python ter um número
de índice correspondente nos permite acessar e manipular strings da mesma
maneira que podemos fazer com outros tipos de dados sequenciais;
Ao fazer a referencia a números de índice podemos isolar um
dos caracteres em uma string
Fazemos isso colocando o número de índice entre colchetes:
> msg = "Olá mundo!"
> print (msg[5])
> u
Quando nos referimos a um numero de índice específico de uma
string o Python retorna o caractere que está nessa posição;
Se tivermos uma sequência longa e queremos identificar um
item no final, também podemos contar de trás para frente a partir do final da
sequência, começando no número de índice -1;
Para a string "Olá Mundo!" o detalhamento dos
índices negativos fica assim:
O |
l |
á |
|
M |
u |
n |
d |
o |
! |
-10 |
-9 |
-8 |
-7 |
-6 |
-5 |
-4 |
-3 |
-2 |
-1 |
Usando números de índice negativo, podemos imprimir o
caractere "d" referindo-se à sua posição no índice -3, da seguinte
forma:
> msg = "Olá Mundo!"
> print (msg[-3])
> d
O uso de números de índice negativo pode ser vantajoso para
isolar um único caractere no final de uma string longa;
Se não tivesse a opção de trabalhar com números negativos
seria preciso combinar com a função len() e subtrair 1 para poder ter o mesmo
efeito.
FATIANDO STRINGS
Também podemos obter um intervalo de caracteres da string;
Digamos que gostaríamos de imprimir apenas a palavra
"Mundo";
Podemos fazer isso criando uma fatia (outras linguagens
chamam isso de substring), que é uma sequencia de caracteres dentro de uma
string original;
Fatias são definidas por um intervalo de números de índice
separados por dois pontos [x:y]:
> msg = "Olá Mundo!"
> print (msg[4:9])
> Mundo
O x é incluído e o y é exclusive. Por isso, o índice 9 não
aparece na resposta.
Ao construir uma fatia, como em [4:9] o primeiro índice é
onde a fatia começa (inclusive) e o segundo número de índice é onde a fatia
termina (exclusivo);
Ao fatiar strings, estamos criando uma substring, que é
essencialmente uma string que existe dentro de outra string;
Se quisermos incluir qualquer extremidade de uma cadeia,
podemos omitir um dos números na sintaxe da cadeia:
> msg = "Olá#Mundo!"
> print (msg[:4])
> Olá#
Para imprimir uma substring que começa no meio de uma string
e é impressa até o final podemos fazer isso incluindo apenas o número do índice
antes dos dois pontos:
> msg = "Olá Mundo!"
> print (msg[4:])
> Mundo!
Também se pode usar números de índice negativo para fatiar
uma string
Ao usar números de índice negativo começaremos com o número
mais baixo primeiro, como ocorre no início da string:
> msg = "Olá Mundo!"
> print (msg[-6:-1])
> Mundo
=> Recurso mais poderoso do Python em relação às opções
oferecidas por outras linguagens.
A divisão de strings pode aceitar um terceiro parâmetro além
de dois números de índice;
O terceiro parâmetro especifica o passo, que se refere a quantos
caracteres avançar depois que o primeiro caractere for recuperado da string.
Até o momento, omitimos o parâmetro passo, e o Python assume o padrão 1, para
que todos os caracteres entre dois números de índice sejam recuperados:
> msg = "Olá Mundo!"
> print (msg[0:7])
> Olá Mun
> print (msg[0:7:1])
> Olá Mun
Então, um passo de 1 terá cada caractere entre dois números
de índice de uma fatia;
Se, em vez disso, aumentarmos o passo veremos que os
caracteres são ignorados:
> msg = "Olá Mundo!"
> print (msg[0:7:2])
> OáMn
Podemos indicar um valor numérico negativo para o passo, que
podemos usar para imprimir a sequencia original na ordem inversa, se definirmos
o passo como -1:
> msg = "Olá Mundo!"
> print (msg[::-1])
> !odnuM álO
=> Se não informar nem o caractere inicial, nem o final,
nem o passo, vc repete a string original.
MÉTODOS DE CONTAGEM
Como outros tipos de dados sequenciais, as strings de
caracteres podem ser contadas por vários métodos;
Primeiro, examinaremos o método len() que pode obter o
tamanho de qualquer tipo de dado que seja uma sequência, ordenada ou não,
incluindo strings, listas, tuplas e dicionários:
> msg = "Olá Mundo!"
> print (len(msg))
> 10
Em vez de usar uma variável também podemos passar uma string
diretamente para o método len():
Print(len("Vamos imprimir o comprimento dessa
string."))
> 42
O método len() conta o número total de caracteres (espaços
ou símbolos) dentro de uma string
Se quisermos contar o numero de vezes que um caractere específico
ou uma sequência de caracteres aparece em uma string podemos fazer isso com o
método str.count ():
>print ("Vamos estudar
Python".count("a"))
>2
>print ("Vamos estudar
Python".count("p"))
>0
Embora a letra P esteja na string é importante ter em mente
que o Python faz distinção entre maiúsculas e minúsculas;
O computador não entende os caracteres, só entende números,
então todos os caracteres são convertidos para códigos da tabela ASC para o
computador poder trabalhar com eles.
Caracteres maiúsculos e minúsculos possuem códigos diferentes,
por isso, o computador entende como elementos diferentes.
Se quisermos procurar
todas as letras em uma string, independentemente da capitalização, podemos usar
o método str.lower() para converter a string em todas as minúsculas primeiro:
>>print ("Vamos estudar
Python".lower().count("p"))
>1
Também podemos encontrar em que posição um caractere ou
sequencia de caracteres ocorre em uma string. Podemos fazer isso com o método
str.find();
>print ("Vamos estudar
Python".find("e"))
>6
Podemos verificar onde a primeira string "Python"
ocorre:
>print ("Vamos estudar
Python".find("Python"))
>14
A primeira instancia da string "Python" começa na
posição do número de índice 14, que é onde o caractere P de Python está
posicionado;
E se quisermos ver onde começa a segunda sequencia? Podemos
fazer isso passando um segundo parâmetro para o método str.find() que iniciará
em um número de índice específico:
>print ("Vamos estudar
Python".find("a",5))
>11
Além disso, podemos especificar um final para o intervalo
como um terceiro parâmetro;
Assim como o fatiamento, podemos fazer isso contando para
trás usando um número de índice negativo:
>print ("Vamos estudar Python".find("t",
2, -5))
>8
Este último exemplo procura a posição de "t" entre
os números de índice de 2 e -5. Como o parâmetro final digitado é um número
negativo, ele será contado a partir do final da string original;
Os métodos de string len(), str.count() e str.find() podem
ser usados para determinar o comprimento, a contagem de caracteres ou strings e
as posições de índice de caracteres ou string em uma string;
A capacidade de acessar números de índices específicos de
string, ou uma fatia especifica de uma string, nos oferece maior flexibilidade
ao trabalhar com esse tipo de dados;
Strings assim como listas e tuplas, são um tipo de dados baseado
em sequências, podem ser acessadas por meio de indexação e fatiamento;
Aula 17 – completa
Nenhum comentário:
Postar um comentário