Voltar ao Glossario
Glossario Python

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.