Trilha de aprendizado · Nível 3 · Tutorial 1

Acessar e recortar textos com índices e fatias

Localizar caracteres e extrair trechos de textos usando posições, limites e passos, estabelecendo regras que também serão usadas em outras sequências.

  • Nível: Iniciante
  • Duração: 13 min
  • 8 passos
Acessar e recortar textos com índices e fatias

O que você vai percorrer

  1. Do comprimento à posição de um caractere Conte os caracteres de um texto e use posições a partir de zero para acessar um deles. 1 min
  2. Acessar pelo final e reconhecer índices inválidos Use índices negativos para acessar caracteres pelo final e reconheça quando uma posição não existe. 2 min
  3. Recortar com início incluído e fim excluído Selecione um trecho contínuo de uma string usando dois limites explícitos. 2 min
  4. Omitir limites e recortar a partir do final Selecione o começo, o final ou um trecho do texto usando limites omitidos e negativos. 2 min
  5. Quando o recorte ultrapassa os limites Diferencie índice inválido, fatia ajustada ao texto disponível e fatia vazia. 1 min
  6. Escolher o passo do recorte Selecione caracteres em intervalos regulares usando passos positivos e reconheça por que o passo zero é inválido. 2 min
  7. Percorrer para trás e inverter o texto Use passos negativos para recortar da direita para a esquerda e inverter um texto. 2 min
  8. Aplicar índices e fatias em um texto estruturado Extraia informações de um identificador e confira as regras de posições, limites e passos. 2 min

O que você vai aprender

  • Consultar o comprimento de um texto com len.
  • Acessar caracteres com índices positivos e negativos.
  • Extrair trechos com fatias, incluindo limites omitidos e passos negativos.
  • Distinguir um índice inválido de uma fatia que ultrapassa os limites do texto.

Antes de começar

  • Apresentar resultados com textos e f-strings
  • Construir expressões numéricas

Passo 1 de 8

Do comprimento à posição de um caractere

Conte os caracteres de um texto e use posições a partir de zero para acessar um deles.

Quantidade e posição são diferentes

Uma string é uma sequência ordenada de caracteres. len(texto) informa quantos caracteres ela contém, incluindo espaços e sinais.

Cada caractere tem uma posição, chamada índice. A contagem dos índices começa em zero. Para acessar um caractere, usamos texto[indice].

Compare a quantidade de caracteres com a posição usada no acesso.

python
texto = "Oi, Ana!"
print(len(texto))  # 8
print(texto[0])    # O
print(texto[4])    # A
Oito células representam O, i, vírgula, espaço, A, n, a e exclamação. Os índices correspondentes são 0, 1, 2, 3, 4, 5, 6 e 7. A letra A está destacada no índice 4.

São 8 caracteres, mas os índices vão de 0 a 7. O espaço também ocupa uma posição.

Conte todos os caracteres

Se saudacao = "Oi Ana!", qual número completa o resultado?

len(saudacao) retorna ___.

Como encontrar o último índice

Para um texto não vazio, o último índice não negativo é len(texto) - 1.

Em "Oi, Ana!", o comprimento é 8. Como a contagem começa em zero, o último índice é 7.

O cálculo também pode ser usado para acessar o último caractere.

python
texto = "Oi, Ana!"
ultimo_indice = len(texto) - 1
print(ultimo_indice)       # 7
print(texto[ultimo_indice])  # !

Localize e acesse

Em texto = "Oi, Ana!", complete o índice para acessar a letra A:

texto[___]

Ainda com texto = "Oi, Ana!", qual caractere texto[len(texto) - 1] retorna? Digite sem aspas.

Passo 2 de 8

Acessar pelo final e reconhecer índices inválidos

Use índices negativos para acessar caracteres pelo final e reconheça quando uma posição não existe.

Conte a partir do final

O índice -1 acessa o último caractere; -2, o penúltimo; e assim por diante, em direção ao início. Cada caractere pode ser acessado por um índice não negativo ou por um negativo.

Texto PORTA em cinco células. Índices acima: 0, 1, 2, 3, 4. Índices abaixo: -5, -4, -3, -2, -1. A letra A corresponde tanto a 4 quanto a -1.

Os dois índices alinhados com cada letra acessam o mesmo caractere.

Duas posições contadas pelo final

python
texto = "PORTA"
print(texto[-1])  # A
print(texto[-2])  # T

Encontre os acessos equivalentes

Para texto = "PORTA", associe os acessos que retornam o mesmo caractere.

Toque em um item e depois no par correspondente.

Quando a posição não existe

Para um texto de comprimento n maior que zero, os índices válidos vão de 0 a n - 1 ou de -n a -1.

Em "PORTA", são válidos 0 a 4 e -5 a -1. Um acesso fora dessas faixas provoca IndexError: não existe caractere naquela posição.

Um acesso fora do texto

Este código provoca o erro mostrado no comentário. O índice -6 também ficaria fora das posições existentes.

python
texto = "PORTA"
print(texto[5])  # IndexError: string index out of range

Atenção

Texto vazio não tem posição válida

Se vazio = "", então len(vazio) é 0. Tanto vazio[0] quanto vazio[-1] provocam IndexError: não há primeiro nem último caractere.

Reconheça os acessos inválidos

Considere texto = "PORTA" e vazio = "". Qual alternativa contém dois acessos que, avaliados separadamente, provocam IndexError?

Passo 3 de 8

Recortar com início incluído e fim excluído

Selecione um trecho contínuo de uma string usando dois limites explícitos.

De uma posição a um trecho

Um índice seleciona um caractere. Uma fatia seleciona um trecho com a sintaxe texto[inicio:fim].

O caractere na posição inicio entra no resultado; o da posição fim fica de fora. Nestes recortes, avançamos para a direita, uma posição por vez.

Em texto = "CADERNO", a fatia texto[1:4] seleciona as posições 1, 2 e 3: "ADE".

CADERNO em sete células, com índices de 0 a 6. A fatia de 1 até antes de 4 destaca A, D e E. O R, na posição 4, fica fora. O resultado é ADE.

O limite 4 indica onde parar, não o último caractere que entra.

Compare o índice com a fatia

python
texto = "CADERNO"
print(texto[1])    # A
print(texto[1:4])  # ADE

Associe os recortes

Para texto = "CADERNO", associe cada fatia ao trecho correspondente.

Toque em um item e depois no par correspondente.

Escolha onde parar

Considere texto = "CADERNO". Complete com um limite final não negativo para obter "DER":

texto[2:___]

Passo 4 de 8

Omitir limites e recortar a partir do final

Selecione o começo, o final ou um trecho do texto usando limites omitidos e negativos.

Deixar um limite em branco

Nos recortes que avançam para a direita:

  • texto[:fim] começa no primeiro caractere: seleciona um prefixo, ou trecho inicial.
  • texto[inicio:] segue até o último caractere: seleciona um sufixo, ou trecho final.
  • texto[:] seleciona o texto inteiro.

O limite final, quando informado, continua excluído.

Duas linhas com CADERNO nas posições 0 a 6. Na primeira, as posições 0, 1 e 2 estão destacadas, formando CAD. Na segunda, as posições 3 a 6 estão destacadas, formando ERNO.

Em CADERNO, [:3] seleciona CAD; [3:] seleciona ERNO.

python
texto = "CADERNO"
print(texto[:3])  # CAD
print(texto[3:])  # ERNO
print(texto[:])   # CADERNO

Escolha os limites

Um prefixo

Para texto = "PORTA", complete com um número não negativo para obter "POR":
texto[:___]

Um sufixo

Ainda com texto = "PORTA", complete com um número não negativo para obter "TA":
texto[___:]

Contar pelo final não inverte o recorte

Um limite negativo localiza uma posição contando a partir do final. Ele não muda a direção do recorte: aqui, continuamos avançando para a direita.

Em "CADERNO", -4 aponta para E e -1 aponta para O. Assim, texto[-4:-1] inclui E, R e N, mas exclui O. Também é possível combinar um limite negativo com outro omitido.

CADERNO com índices negativos de -7 a -1. E, R e N estão destacados. Uma seta segue para a direita do E ao N; O, na posição -1, fica fora do destaque.

[-4:-1] começa no E e para antes do O: resultado ERN, não NRE.

python
texto = "CADERNO"
print(texto[-4:-1])  # ERN
print(texto[-3:])    # RNO
print(texto[:-1])    # CADERN

Delimite sem inverter

Para texto = "PORTA", complete com um número negativo para obter "OR":
texto[-4:___]

Para texto = "PORTA", texto[-3:] retorna "ATR".

Passo 5 de 8

Quando o recorte ultrapassa os limites

Diferencie índice inválido, fatia ajustada ao texto disponível e fatia vazia.

O limite pedido e o trecho disponível

Considere texto = "LIVRO". Um índice individual precisa apontar para um caractere existente. Já uma fatia ajusta seus limites ao texto disponível: ultrapassar as extremidades não provoca IndexError.

texto[2:20] retorna "VRO". Se o recorte começar além do texto, como em texto[20:30], o resultado será "": texto vazio.

Comparação para LIVRO, com índices de 0 a 4: texto[20] não encontra uma posição e provoca IndexError; texto[2:20] seleciona VRO; texto[20:30] não seleciona caracteres e retorna texto vazio.

O acesso individual exige uma posição existente; a fatia retorna apenas os caracteres disponíveis no intervalo.

Qual é o resultado?

Para texto = "CASA", associe cada expressão ao resultado.

Toque em um item e depois no par correspondente.

Outros caminhos para o texto vazio

Nos recortes que avançam para a direita, os limites são ajustados ao intervalo entre 0 e len(texto). Um início muito negativo fica no começo do texto.

Após o ajuste, se o início for maior ou igual ao fim, o resultado será "". Em uma string vazia, essas fatias também retornam "".

Confira os limites

Os comentários mostram os resultados. As comparações tornam o texto vazio visível como True.

python
texto = "LIVRO"

print(texto[-20:2])        # LI
print(texto[3:3] == "")    # True: início igual ao fim
print(texto[4:2] == "")    # True: início maior que o fim

vazio = ""
print(vazio[:20] == "")    # True: nenhum caractere disponível

Limites grandes causam erro?

Se texto = "", a expressão texto[5:100] provoca IndexError.

Passo 6 de 8

Escolher o passo do recorte

Selecione caracteres em intervalos regulares usando passos positivos e reconheça por que o passo zero é inválido.

De quantas em quantas posições?

A forma completa é texto[inicio:fim:passo]. O passo indica o deslocamento entre as posições selecionadas. Se for omitido, vale 1.

Com passo 2, avançamos duas posições por vez, deixando um caractere entre os selecionados. O início continua incluído e o fim, excluído.

CADERNO com índices de 0 a 6. A fatia texto[0:7:2] seleciona C, D, R e O, nas posições 0, 2, 4 e 6. As posições 1, 3 e 5 são puladas.

Passo 2: posições 0 → 2 → 4 → 6. Resultado: C DRO sem espaços, ou seja, CDRO.

Com limites explícitos ou omitidos

O passo também funciona quando deixamos os limites em branco.

python
texto = "CADERNO"
print(texto[0:7:2])  # CDRO
print(texto[::2])    # CDRO
print(texto[1::2])   # AEN
print(texto[1:4:1])  # ADE: igual a texto[1:4]

Siga o passo e confira o limite

Percurso guiado

Para texto = "CADERNO", ordene as posições visitadas por texto[0:7:3].

  1. 0
  2. 6
  3. 3

Agora preveja o texto

Para texto = "CADERNO", qual é o resultado de texto[1:5:2]? Digite apenas os caracteres, em maiúsculas e sem aspas.

Zero não é um passo válido

Atenção

Passo zero provoca ValueError

texto[::0] não retorna texto vazio nem repete um caractere: provoca ValueError. Python não aceita zero como passo de uma fatia. Omitir o passo é diferente de escrever zero: quando omitido, ele vale 1.

Se executar este exemplo no seu computador, ele será interrompido pelo erro indicado.

python
texto = "CADERNO"
print(texto[::0])  # ValueError: slice step cannot be zero

Passo omitido ou passo zero?

Para texto = "CADERNO", texto[::0] retorna o mesmo resultado que texto[:].

Passo 7 de 8

Percorrer para trás e inverter o texto

Use passos negativos para recortar da direita para a esquerda e inverter um texto.

O sinal do passo muda a direção

Com passo negativo, a fatia percorre posições em direção ao início do texto. O início continua incluído e o fim continua excluído.

Para texto = "Python", texto[5:1:-1] visita as posições 5, 4, 3 e 2: o resultado é "noht". A posição 1 fica de fora.

Um passo -2 também vai para a esquerda, mas diminui o índice de dois em dois.

Da posição 5 até antes da posição 1

Texto Python em seis células com índices de 0 a 5. Setas seguem de 5 para 4, de 4 para 3 e de 3 para 2, selecionando n, o, h e t, nessa ordem. O índice 1 está excluído. Resultado: noht.

texto[5:1:-1]: siga as setas para a esquerda e pare antes do índice 1.

Agora, de dois em dois

Considere texto = "Python". Qual é o resultado de texto[5:1:-2]? Digite apenas os caracteres, sem aspas.

Inverter usando limites omitidos

Com passo negativo, omitir o início faz o percurso partir do último caractere. Omitir o fim permite seguir até incluir o primeiro, se o passo alcançar essa posição.

Assim, texto[::-1] inverte todo o texto.

Compare os limites

Os comentários indicam os resultados das expressões.

python
texto = "Python"

print(texto[::-1])      # nohtyP
print(texto[::-2])      # nhy
print(texto[:-1:-1])    # texto vazio: ""
print(texto[1:5:-1])    # texto vazio: ""

Dica

Fim omitido não é fim -1

Em texto[:-1:-1], o início omitido e o fim -1 indicam a mesma posição: a última. Como o fim é excluído, nada é selecionado.

Já texto[1:5:-1] fica vazio porque, partindo de 1 e diminuindo os índices, não é possível avançar em direção a 5. Para recortar para trás com limites explícitos válidos, o início precisa estar à direita do fim.

Construa a inversão

Você tem palavra = "janela". Escreva uma expressão que produza "alenaj" usando uma fatia. Explique por que deixar o início e o fim em branco permite inverter a palavra inteira.

Escreva pelo menos 15 caracteres (0/15).

Passo 8 de 8

Aplicar índices e fatias em um texto estruturado

Extraia informações de um identificador e confira as regras de posições, limites e passos.

Um identificador, várias informações

O identificador BR-2048-X tem formato fixo: prefixo de duas letras, hífen, trecho de quatro dígitos, hífen e letra final. Sua missão é consultar as extremidades, separar as partes e inverter apenas o trecho numérico.

Identificador BR-2048-X em nove células: B no índice 0, R no 1, hífen no 2, 2 no 3, 0 no 4, 4 no 5, 8 no 6, hífen no 7 e X no 8. Prefixo BR, trecho numérico 2048 e letra final X aparecem em cores diferentes.

Use as posições para separar os campos sem incluir os hífens.

Código-base

Você pode resolver nas próximas telas ou executar este código no Python do seu computador e acrescentar suas consultas com print.

python
identificador = "BR-2048-X"
print(identificador)

Extraia e confira

Qual expressão resolve cada pedido?

Para identificador = "BR-2048-X", registre uma expressão e seu resultado para cada pedido:

  1. Comprimento total.
  2. Primeiro caractere, usando índice não negativo.
  3. Último caractere, usando índice negativo.
  4. Prefixo BR.
  5. Trecho numérico 2048.
  6. Trecho numérico invertido: 8402.

No último pedido, você pode guardar o trecho em uma variável antes de invertê-lo.

Escreva pelo menos 40 caracteres (0/40).

Erro ou resultado válido?

Compare os quatro casos

Ainda com identificador = "BR-2048-X", indique o resultado ou o nome do erro:

A. identificador[99]
B. identificador[7:99]
C. identificador[6:3]
D. identificador[::0]

Por que A e B se comportam de formas diferentes, mesmo usando 99?

Se testar no Python local, execute cada caso separadamente: um erro interrompe o script.

Escreva pelo menos 30 caracteres (0/30).

Roteiro para qualquer recorte

Resumo

Antes de consultar, confira

Escolha um índice para uma posição ou uma fatia para um trecho.

  • Comprimento: len(texto) informa quantas posições existem. Uma string vazia não tem índice válido.
  • Posição inicial: ela existe? Na fatia, o início é incluído; índices negativos contam a partir do final.
  • Limite final: ele fica de fora. Fatias ajustam limites que ultrapassam o texto e podem retornar ''.
  • Direção: passo positivo avança para a direita; negativo, para a esquerda. Os limites precisam permitir esse percurso.
  • Tamanho do passo: se omitido, vale 1; zero causa ValueError. Em [::-1], os limites omitidos permitem inverter todo o texto.

Tutorial concluído

Parabéns! Você concluiu: Acessar e recortar textos com índices e fatias

Você praticou como medir textos, acessar caracteres e extrair trechos. Para conferir suas próximas consultas, siga o roteiro: posição inicial, limite final, direção e tamanho do passo.

Baixe o Aplicativo agora para ter acesso a + de 5000 cursos gratuitos, exercícios, certificado e muito conteúdo sem pagar nada!

  • Cursos online 100% gratuitos do início ao fim

    Milhares de cursos online em vídeo, ebooks e áudiobooks.

  • Mais de 60 mil exercícios gratuitos

    Para testar seus conhecimentos no decorrer dos cursos online

  • Certificado Digital gratuito válido em todo o Brasil

    Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail

Aplicativo Cursa na tela de ebook, na tela de curso em vídeo e na tela de exercícios do curso, mais o certificado de conclusão de curso