String: O que É e Como Funciona | Python Brasil
Aprenda tudo sobre strings em Python: criacao, metodos, formatacao, fatiamento, manipulacao de texto e boas praticas para trabalhar com cadeias de caracteres.
O que é uma String?
Uma string em Python e uma sequencia imutavel de caracteres usada para representar texto. Strings sao um dos tipos de dados mais fundamentais da linguagem e estao presentes em praticamente todo programa, desde a leitura de dados do usuario ate a construcao de respostas em APIs web.
Em Python, strings sao objetos da classe str e podem ser criadas com aspas simples, aspas duplas ou aspas triplas. A linguagem nao faz distincao entre aspas simples e duplas — a escolha e uma questao de estilo e conveniencia.
Como criar Strings
# Formas de criar strings
nome = 'Maria'
sobrenome = "Silva"
paragrafo = """Este e um texto
que ocupa varias
linhas."""
# String vazia
vazia = ''
vazia2 = str()
# Convertendo outros tipos para string
numero_str = str(42) # '42'
lista_str = str([1, 2, 3]) # '[1, 2, 3]'
booleano = str(True) # 'True'
# Strings com caracteres especiais
caminho = 'C:\\Users\\pasta' # com escape
caminho_raw = r'C:\Users\pasta' # raw string, sem interpretar escapes
unicode_str = 'Sao Paulo \u2014 Brasil' # com caractere Unicode
Fatiamento e Indexacao
Strings em Python sao sequencias, o que significa que cada caractere ocupa uma posicao numerada a partir de zero. O fatiamento permite extrair partes de uma string sem modificar a original.
texto = 'Python Brasil'
# Indexacao
print(texto[0]) # 'P'
print(texto[-1]) # 'l'
print(texto[7]) # 'B'
# Fatiamento (slice)
print(texto[0:6]) # 'Python'
print(texto[7:]) # 'Brasil'
print(texto[:6]) # 'Python'
print(texto[::2]) # 'Pto rsl'
# Invertendo uma string
print(texto[::-1]) # 'lisarB nohtyP'
Metodos Principais
A classe str possui dezenas de metodos embutidos. Nenhum deles modifica a string original — todos retornam uma nova string, ja que strings sao imutaveis.
frase = ' Aprender Python e divertido! '
# Remocao de espacos
print(frase.strip()) # 'Aprender Python e divertido!'
print(frase.lstrip()) # 'Aprender Python e divertido! '
print(frase.rstrip()) # ' Aprender Python e divertido!'
# Mudanca de caixa
print('python'.upper()) # 'PYTHON'
print('PYTHON'.lower()) # 'python'
print('python brasil'.title()) # 'Python Brasil'
print('python brasil'.capitalize()) # 'Python brasil'
# Busca e substituicao
texto = 'Python e poderoso e Python e simples'
print(texto.count('Python')) # 2
print(texto.find('poderoso')) # 10
print(texto.replace('Python', 'Java')) # 'Java e poderoso e Java e simples'
# Verificacao de conteudo
print('123'.isdigit()) # True
print('abc'.isalpha()) # True
print('abc123'.isalnum()) # True
print(' '.isspace()) # True
# Divisao e juncao
palavras = 'um,dois,tres'.split(',') # ['um', 'dois', 'tres']
junto = '-'.join(palavras) # 'um-dois-tres'
Formatacao de Strings
Python oferece varias formas de formatar strings. As f-strings, introduzidas no Python 3.6, sao a forma mais moderna e recomendada.
nome = 'Ana'
idade = 28
# f-strings (recomendado)
print(f'{nome} tem {idade} anos.')
# Formatacao com expressoes
preco = 49.99
print(f'Preco: R$ {preco:.2f}') # 'Preco: R$ 49.99'
print(f'{"centro":^20}') # ' centro '
print(f'{1000000:_}') # '1_000_000'
# Metodo format
print('{} tem {} anos.'.format(nome, idade))
print('{1} tem {0} anos.'.format(idade, nome))
# Operador % (estilo antigo)
print('%s tem %d anos.' % (nome, idade))
Strings Multilinhas e Documentacao
Strings com aspas triplas sao usadas para textos longos e tambem para docstrings — a documentacao embutida de funcoes, classes e modulos.
def calcular_imc(peso, altura):
"""
Calcula o Indice de Massa Corporal (IMC).
Parametros:
peso (float): Peso em quilogramas.
altura (float): Altura em metros.
Retorna:
float: O valor do IMC calculado.
"""
return peso / (altura ** 2)
# Strings multilinhas preservam quebras de linha
email = """\
Prezado(a) cliente,
Seu pedido foi confirmado com sucesso.
Atenciosamente,
Equipe Python Brasil"""
Imutabilidade das Strings
Um ponto essencial e que strings em Python sao imutaveis. Isso significa que nao e possivel alterar um caractere individual de uma string existente. Qualquer operacao que pareca modificar uma string na verdade cria uma nova.
texto = 'Python'
# Isso gera um erro
# texto[0] = 'J' # TypeError: 'str' object does not support item assignment
# A forma correta e criar uma nova string
novo_texto = 'J' + texto[1:]
print(novo_texto) # 'Jython'
Essa imutabilidade tem consequencias praticas importantes para desempenho. Concatenar strings repetidamente em um loop cria muitos objetos intermediarios. Para esses casos, use str.join() ou io.StringIO.
# Forma ineficiente
resultado = ''
for i in range(1000):
resultado += str(i) # cria um novo objeto a cada iteracao
# Forma eficiente
partes = [str(i) for i in range(1000)]
resultado = ''.join(partes)
Codificacao e Bytes
Strings em Python 3 sao sequencias de caracteres Unicode. Para trabalhar com dados binarios ou enviar texto pela rede, e necessario converter entre str e bytes.
texto = 'Sao Paulo'
# Codificando string para bytes
dados = texto.encode('utf-8')
print(dados) # b'S\xc3\xa3o Paulo'
print(type(dados)) # <class 'bytes'>
# Decodificando bytes para string
texto_de_volta = dados.decode('utf-8')
print(texto_de_volta) # 'Sao Paulo'
Erros Comuns
O primeiro erro frequente e tentar modificar uma string diretamente, esquecendo que ela e imutavel. O segundo e confundir os metodos find() e index() — ambos buscam substrings, mas find() retorna -1 quando nao encontra, enquanto index() lanca uma excecao ValueError. O terceiro e esquecer que split() sem argumentos divide por qualquer espaco em branco e remove strings vazias, enquanto split(' ') divide apenas por espacos simples e pode gerar strings vazias na lista resultante.
Boas Praticas
Prefira f-strings para formatacao por serem mais legiveise eficientes. Use str.join() em vez de concatenacao repetida com +. Para comparacoes case-insensitive, normalize ambos os lados com lower() ou casefold(). Ao trabalhar com caminhos de arquivo, prefira o modulo pathlib em vez de manipular strings manualmente. Para validacao e busca de padroes complexos, considere expressoes regulares com o modulo re.
Quando Usar
Strings sao utilizadas em toda parte: leitura e escrita de arquivos, comunicacao com APIs, interacao com o usuario, manipulacao de dados textuais, geracao de relatorios e muito mais. Compreender bem os metodos e comportamentos de strings e a base para escrever codigo Python claro, eficiente e robusto.