Texto, só que com métodos
Uma string em Python é uma sequência de caracteres, e você vai usar strings mais do que qualquer outro tipo. Todo nome, rótulo, mensagem, URL, caminho de arquivo e resposta de API vive numa string em algum momento.
Crie uma com aspas — simples, duplas ou triplas:
Aspas simples e duplas são intercambiáveis. Use a que te poupa de escapar um caractere. "don't" é limpo; 'don\'t' precisa de barra invertida.
Strings são imutáveis. Uma vez que uma string existe, você não pode mudar um caractere dela no lugar. Toda operação que parece mudar uma string na verdade retorna uma nova. É por isso que você vai escrever text = text.upper() em vez de só text.upper() — sem a reatribuição, a string nova em maiúsculas seria jogada fora.
Juntando e repetindo
Dois operadores fazem a maior parte da combinação de strings que você vai precisar:
+ concatena strings. * repete uma string. Os dois retornam uma string nova.
Concatenar muitas partes com + fica feio rápido. Quando você está misturando valores de tipos diferentes numa mensagem, recorra a f-strings — veja a próxima seção.
f-strings: o jeito que você geralmente vai formatar
Coloque um f na frente da aspa de abertura e a string vira um template. Qualquer coisa em {...} é substituída pelo valor daquela expressão:
Você pode colocar qualquer expressão dentro das chaves — variáveis, aritmética, chamadas de método, chamadas de função. Mantenha simples, porém; se você está tentado a enfiar um cálculo de três linhas em {...}, calcule numa variável nomeada primeiro.
f-strings também aceitam especificadores de formato depois de dois pontos, para controlar formatação numérica, preenchimento e alinhamento:
Essas especificações de formato são as mesmas que str.format() usa e valem uma olhada rápida quando você estiver à vontade com o básico. Você não precisa delas para código de primeiro dia.
Fatiamento: pegue um pedaço
Strings são indexáveis como sequências. Cada caractere tem uma posição começando em zero, e você pode pegar um caractere ou um intervalo:
O padrão [start:stop:step] aparece em listas e outras sequências também, então investir alguns minutos para internalizar compensa em todo lugar.
Duas coisas para destacar:
- O índice
stopé exclusivo:word[0:2]inclui os índices 0 e 1, não 2. - Índices negativos contam do fim:
-1é o último caractere,-2o antes, e assim por diante.
Como inverter uma string
Strings não têm método .reverse() — são imutáveis — mas fatiamento com passo -1 resolve em uma linha:
word[::-1] se lê como "do começo ao fim, passo de -1". O resultado é uma string nova; a original fica intocada. Se você precisa iterar os caracteres em ordem inversa sem materializar uma string nova, reversed(word) retorna um iterador preguiçoso.
Como checar o tamanho de uma string
len(texto) retorna o número de caracteres:
Note que len conta code points Unicode, não bytes. len("café") é 4, não 5, mesmo que a codificação UTF-8 ocupe mais bytes — o que geralmente é o que você quer.
Como checar se uma string contém uma substring
O operador in é a checagem idiomática, e se lê como inglês:
Para checagens sem diferenciar maiúsculas, normalize os dois lados antes:
Se você precisa da posição, não só sim/não, use .find() — retorna o índice ou -1 quando a substring não está lá.
Métodos de string comuns
Strings têm dezenas de métodos. Você vai recorrer constantemente a este punhado:
Dividindo e juntando:
.split(separador) transforma uma string em lista. separador.join(lista_de_strings) cola de volta. Esses dois métodos carregam uma fatia desproporcional do trabalho com strings no mundo real.
Mais uma dupla útil:
Isso é um parser para uma entrada de config de uma linha, escrito em três linhas. Strings pequenas, grande alavancagem.
Checando o que tem dentro
Vários métodos retornam booleanos, úteis em condições if:
Use com moderação — eles não lidam com todos os detalhes de Unicode do jeito que você pode esperar. Para qualquer coisa além de ASCII, apoie-se no módulo regex ou no módulo unicodedata.
Escapando caracteres especiais
Alguns caracteres precisam de barra invertida para aparecer dentro de uma string:
Se você está escrevendo caminhos do Windows ou regex, strings raw facilitam a vida. Coloque um r na frente da aspa e barras invertidas deixam de ser caracteres de escape:
Strings estão em todo lugar, então mantenha legível
Três hábitos que evitam que código pesado em strings vire sopa:
- Use f-strings para interpolação. Não encadeie
+entre tipos diferentes. - Reatribua ao "modificar".
text = text.strip(), nãotext.strip()sozinho. - Recorra a
.split()e.join()antes de escrever laços manuais para analisar ou montar texto. São mais rápidos, mais claros e mais difíceis de errar.
Na sequência: f-strings em profundidade — a ferramenta de formatação que você já viu algumas vezes, mais as specs de formatação de números e datas que fazem valer a pena dominar.
Perguntas frequentes
O que é uma f-string em Python?
Uma f-string é um literal de string com prefixo f, onde qualquer coisa dentro de {...} é substituída pelo valor daquela expressão. Exemplo: f"Hello, {name}!" encaixa o valor atual de name na string em tempo de execução.
Como inverto uma string em Python?
Use fatiamento com passo -1: invertida = original[::-1]. Isso retorna uma nova string feita dos mesmos caracteres em ordem inversa. A original não é mexida porque strings em Python são imutáveis.
Como divido uma string em Python?
Chame .split() na string. Sem argumento, divide em qualquer espaço em branco: "a b c".split() retorna ['a', 'b', 'c']. Você pode passar um separador específico: "a,b,c".split(",") retorna ['a', 'b', 'c'].
Strings em Python são mutáveis?
Não. Strings são imutáveis — uma vez que uma string existe, você não pode mudar nenhum caractere no lugar. Todo método que "muda" uma string na verdade retorna uma nova. É por isso que você vê padrões como text = text.strip() — você reatribui a variável à string nova.
Como concateno strings em Python?
Use + para juntar duas strings: "hello" + " " + "world". Para combinar um valor numa frase, prefira uma f-string: f"Hello, {name}". Para juntar muitas partes de uma lista, use separador.join(partes) — é mais rápido e mais legível do que + encadeado.
Como checo o tamanho de uma string em Python?
Chame a função embutida len(texto). Ela retorna o número de caracteres (code points Unicode), então len("café") é 4. Para tamanho em bytes, codifique primeiro: len(texto.encode("utf-8")).