Fatiamento de Strings
Aprenda o fatiamento de strings em Python com sintaxe, diagramas de índices, valores de passo, índices negativos e exemplos práticos.
Fatiamento de Strings em Python
O fatiamento de strings permite extrair uma substring de uma string maior, especificando onde começar, onde parar e quantos caracteres pular de cada vez. É uma das operações de string mais comuns em Python e é usada em todo lugar, desde a análise de nomes de arquivos até a inversão de palavras.
Este capítulo aborda:
- A sintaxe
[start:stop:step]e como os índices mapeiam para os caracteres - Omitir start ou stop (fatiar desde o início ou até o final)
- Índices negativos (contando da direita)
- O parâmetro step (pular caracteres, inverter uma string)
- Armadilhas comuns: índices fora do intervalo, fatias vazias
- Exemplos práticos que você pode executar imediatamente
Se você é novo em strings em Python, leia o capítulo Python Strings primeiro — ele explica como as strings são criadas e indexadas.
Como Funcionam os Índices de String
Cada caractere em uma string Python tem dois índices: um positivo (contando da esquerda, começando em 0) e um negativo (contando da direita, começando em -1).
Para a string "Hello, World!":
H e l l o , W o r l d !
0 1 2 3 4 5 6 7 8 9 10 11 12 ← positive
-13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 ← negativeA sintaxe completa de fatiamento é:
string[start:stop:step]start— índice do primeiro caractere a incluir (padrão:0)stop— índice do primeiro caractere a excluir (padrão: fim da string)step— quantas posições avançar a cada vez (padrão:1)
O índice stop é exclusivo — o caractere em stop nunca é incluído no resultado.
Fatiamento Básico de Strings
Forneça um índice de início e de parada separados por dois-pontos para extrair os caracteres entre eles.
my_string[0:3] retorna os caracteres nas posições 0, 1 e 2 — o caractere no índice 3 ('l') não é incluído.
Omitindo o Início ou o Final
Omita start para começar do primeiro caractere, ou omita stop para continuar até o último caractere.
my_string[:] é um idioma comum para copiar uma string (embora as strings sejam imutáveis em Python, por isso simplesmente retorna o mesmo valor).
Índices Negativos
Índices negativos contam de trás para frente a partir do final da string. -1 refere-se ao último caractere, -2 ao penúltimo, e assim por diante.
Um padrão útil: my_string[-n:] sempre fornece os últimos n caracteres, independentemente do tamanho da string.
O Parâmetro Step
O terceiro argumento do fatiamento é o passo. Ele controla quantas posições Python avança após cada caractere selecionado.
Invertendo uma String
Defina o passo como -1 para iterar da direita para a esquerda. Esta é a forma idiomática de inverter uma string em Python:
Você pode combinar um passo negativo com índices de início e parada. Lembre-se: quando o passo é negativo, start deve ser maior que stop.
my_string = "Hello, World!"
print(my_string[10:2:-1]) # 'lroW ,ol' — from index 10 down to (not including) index 2Veja o capítulo Reverse a String para mais técnicas, incluindo reversed() e ''.join().
Combinando Start, Stop e Step
Todas as três partes funcionam juntas. Pense no fatiamento como um loop for que começa em start, para antes de stop e incrementa por step.
Índices Fora do Intervalo
Ao contrário do acesso direto por índice (que gera um IndexError para um índice fora do intervalo), o fatiamento lida com valores fora do intervalo de forma elegante, limitando-os às fronteiras da string.
my_string = "Hello, World!"
# Stop index beyond the string length — no error
print(my_string[7:100]) # 'World!'
# Start index beyond the string length — returns empty string
print(my_string[50:60]) # ''
# Direct index access would raise IndexError:
# print(my_string[100]) # IndexError: string index out of rangeIsso torna o fatiamento seguro para padrões do tipo "me dê até N caracteres" sem precisar verificar len() primeiro.
Exemplos Práticos
Extrair a extensão de um arquivo
filename = "report.pdf"
extension = filename[-3:]
print(extension) # 'pdf'Extrair o domínio de um endereço de e-mail
email = "[email protected]"
at_index = email.index("@")
domain = email[at_index + 1:]
print(domain) # 'example.com'Truncar uma string longa com reticências
def truncate(text, max_length):
if len(text) <= max_length:
return text
return text[:max_length - 3] + "..."
print(truncate("Hello, World!", 8)) # 'Hello...'
print(truncate("Hi", 8)) # 'Hi'Verificar se uma string é um palíndromo
word = "racecar"
is_palindrome = word == word[::-1]
print(is_palindrome) # TrueReferência Rápida
| Expressão | Significado |
|---|---|
s[a:b] | Caracteres do índice a até (não incluindo) b |
s[:b] | Do início até (não incluindo) b |
s[a:] | Do índice a até o final |
s[:] | Cópia completa |
s[a:b:n] | Cada n-ésimo caractere de a até b |
s[::-1] | String invertida |
s[-n:] | Últimos n caracteres |
s[:-n] | Tudo exceto os últimos n caracteres |
O Que Ler a Seguir
- Python Strings — criação de strings, indexação e imutabilidade
- String Methods —
upper(),strip(),split(),replace()e mais - Modify Strings — técnicas para transformar o conteúdo de strings
- Concatenate Strings — unindo strings com
+ejoin() - Escape Characters —
\n,\t,\\e outras sequências especiais - Format Strings — incorporando valores em strings com f-strings e
.format()