Fatiando uma string (slicing strings) em Python

Vamos entender como retornar substrings a parte de uma string na linguagem Python

Avatar


24 de dezembro3 min. de leitura

Fala, meus consagrados! Tudo beleza com vocês?

Vamos entender como retornar substrings a parte de uma string na linguagem Python.

Teoria

Podemos acessar um intervalo de uma string com a seguinte sintaxe:

string[início:fim]

Onde informamos o índice inicial (início) e o índice final de uma string (fim, mas ele não é incluído).

Exemplo:

No exemplo acima, temos dois fatiamentos:

  • No primeiro fatiamento, lemos da seguinte forma: traga o intervalo (trecho) da string da posição 0 (primeiro índice informado) até a posição 6 (posição anterior ao segundo índice informado); e
  • No segundo fatiamento: traga o intervalo (trecho) da string da posição 8 (primeiro índice informado) até a posição 13 (posição anterior ao segundo índice informado).

PULO DO GATO
Essa operação de retornar um intervalo de uma string é chamada de fatiamento de strings (slicing strings). O fatiamento de strings é bastante cobrado em questões de concursos sobre strings em Python.

 

ATENÇÃO!

O fatiamento de strings não afeta a string original. Quando usamos essa operação, o que é retornado é um trecho da string original. Veja o exemplo abaixo para entender melhor.

Exemplo:

Veremos mais exemplos sobre fatiamento de strings, para que você, meu(minha) prezado(a) aluno(a), possa entender como funciona a operação em várias situações.

Podemos fatiar uma string, omitindo o índice inicial. Dessa forma é como se o intervalo começasse do primeiro caractere:

Veja que x[:7] é equivalente a x[0:7].

Da mesma forma que podemos omitir o índice inicial, podemos omitir o índice final:

Veja que x[8:] é equivalente a x[8:14]. Ou seja, ao omitir o índice final é como se fatiássemos a string a partir do índice inicial informado até o final da string.

Além, da omissão do índice inicial e do índice final, podemos omitir os dois ao mesmo tempo. Quando isso acontece, o que é retornado é a string completa, pois não houve parâmetros de fatiamento.

Exemplo:

Podemos também usar valores negativos para representar os índices do fatiamento. Para entendermos como isso acontece, o último caractere fica na posição -1, o penúltimo fica na posição -2, o antepenúltimo, na posição -3 e assim por diante.

Exemplo:

Podemos ter um terceiro parâmetro para o fatiamento: passo (string[início:fim:passo]). Ele determina o incremento entre cada índice para o fatiamento. Ele é opcional. Quando não citado, então assume-se o valor 1.

Exemplos:

Quando se usa valores negativos para o parâmetro passo, o fatiamento vem de forma inversa.

Exemplos:

Por último, temos o seguinte:

  • Se o índice de início for maior que o índice final e o passo for positivo:
    • Então não é retornado nada;
  • Se o índice de início for menor que o índice final e o passo for negativo:
    • Então não é retornado nada.

Exemplos:

Questões de Concursos

[COVEST/COPSET 2019 UFPE – Analista de Tecnologia da Informação – Sistemas] Considere uma String s, que armazena o valor “ALO MUNDO”. Utilizando Java e Python, respectivamente, a alternativa com as instruções que exibiriam a substring “MU” seria:

(A) Java: s.substring(4,6)
Python: s.substring(5,7)

(B) Java: s[5,6]
Python: s[5:6]

(C) Java: s.substring(4,6)
Python: s[-5:-3]

(D) Java: s.substring(-4,-3)
Python: s[5:6]

(E) Java: s.substring(4,6)
Python: s.substr(4,6)

Comentários:

Focando apenas na linguagem Python, para fazemos o fatiamento da string “ALO MUNDO” a fim de trazer o trecho “MU”, podemos fazer de duas formas: usando índices positivos ou negativos.

Com isso, de acordo com o código, o gabarito é a letra c, pois foi a única que trouxe o código correto em Python: s[-5: -3].

Comentando todas as letras:

  • Letra A está errada: não existe o método substring em Python (s.substring(5,7));
  • Letra B está errada: o código em Python da letra (s[5:6]) retorna o caractere “U”;
  • Letra C está certa: o código em Python da letra (s[-5:-3]) retorna o caractere “MU”;
  • Letra D está errada: o código em Python da letra (s[5:6]) retorna o caractere “U”;
  • Letra E está errada: não existe o método substr em Python (s.substr(4,6)).

Gabarito: letra c.

[IF Sul Rio-Grandense 2019 IF Sul Rio-Grandense – Analista de Tecnologia da Informação] Considerando a variável s = ‘ IFSUL’, utilizando a linguagem Python, qual a instrução que exibe ‘SU’?

(A) print (s[-3:-1])

(B) print (s[3:4])

(C) print (s.substr(3,4))

(D) print (s[-3:-4])

Comentários:

Para retornar o trecho “SU” da string “ IFSUL” (sendo que o primeiro caractere é um espaço em branco, podemos fazer das seguintes formas:

Comentando todas as letras:

  • Letra A está certa: o código em Python da letra (s[-3:-1]) retorna o caractere “SU”;
  • Letra B está errada: o código em Python da letra (s[3:4]) retorna o caractere “S”;
  • Letra C está errada: não existe o método substr em Python (s.substr(3,4));
  • Letra D está errada: o código em Python da letra (s[-3:-4]) não retorna nada, pois o valor do segundo índice é menor que o primeiro.

Gabarito: letra a.

Então é isso!
[]s e até a próxima!
_________________________
Professor Rogerão Araújo

Avatar


24 de dezembro3 min. de leitura