W3docs

Python Strings: Um Guia Completo

Aprenda Python strings do zero: criação, indexação, fatiamento, f-strings, métodos integrados e armadilhas comuns com exemplos executáveis.

Strings são um dos tipos de dados mais utilizados em Python. Sempre que seu programa lê um arquivo, exibe uma mensagem ou analisa uma entrada, ele trabalha com strings. Este capítulo cobre como criar strings, indexá-las e fatiá-las, usar métodos integrados e evitar armadilhas comuns.

O que é uma String em Python?

Uma string é uma sequência ordenada e imutável de caracteres Unicode. "Imutável" significa que você nunca pode alterar um caractere no lugar — toda operação que parece modificar uma string na verdade cria uma nova. Strings podem conter letras, dígitos, pontuação, espaços em branco ou qualquer caractere Unicode (incluindo emojis).

greeting = "Hello, world!"
print(type(greeting))  # <class 'str'>
print(len(greeting))   # 13

Criando Strings

Python aceita três estilos de aspas, todos equivalentes:

single = 'Python'
double = "Python"
triple = """Python"""   # triple-double also works as '''Python'''

Aspas simples e duplas

Use aquela que evita o escape do caractere de aspas dentro da string:

message1 = "It's a great day"   # apostrophe is fine inside double quotes
message2 = 'She said "hello"'   # double quote is fine inside single quotes

Strings com aspas triplas (multilinha)

As aspas triplas permitem que uma string abranja várias linhas sem nenhuma sequência de escape:

poem = """Roses are red,
Violets are blue,
Python is awesome,
And so are you."""
print(poem)

Saída:

Roses are red,
Violets are blue,
Python is awesome,
And so are you.

Strings com aspas triplas também são a forma convencional de escrever docstrings — os blocos de documentação que aparecem no início de funções, classes e módulos.

Convertendo outros tipos para strings

Use a função integrada str() para converter qualquer objeto em sua representação como string:

num = 42
pi  = 3.14
flag = True

print(str(num))   # '42'
print(str(pi))    # '3.14'
print(str(flag))  # 'True'

Indexando Caracteres

Python usa indexação baseada em zero: o primeiro caractere está no índice 0. Você também pode usar índices negativos-1 refere-se ao último caractere, -2 ao penúltimo, e assim por diante.

python— editable, runs on the server

Acessar um índice fora do intervalo válido gera um IndexError.

Fatiando Strings

Um slice extrai uma parte de uma string usando a sintaxe s[start:stop:step].

ParteSignificadoPadrão
startÍndice do primeiro caractere a incluir0
stopÍndice do primeiro caractere a excluirlen(s)
stepQuantos caracteres avançar a cada vez1
s = "Hello, World!"

print(s[0:5])    # Hello     — characters at indexes 0–4
print(s[7:])     # World!    — from index 7 to the end
print(s[:5])     # Hello     — from the start to index 4
print(s[-6:])    # World!    — last 6 characters
print(s[::2])    # Hlo ol!   — every other character
print(s[::-1])   # !dlroW ,olleH  — reversed string

Para uma análise mais detalhada da sintaxe de fatiamento, veja o capítulo Slicing Strings.

Concatenação e Repetição de Strings

O operador + une duas strings; o operador * repete uma string um determinado número de vezes.

python— editable, runs on the server

Para concatenação em grande escala dentro de um loop, use str.join() em vez de + — é significativamente mais rápido porque evita a criação de objetos string intermediários:

words = ["one", "two", "three"]
result = ", ".join(words)
print(result)   # one, two, three

Repetição de Strings

python— editable, runs on the server

Os Operadores in e not in

Verifique se uma substring existe dentro de uma string com in ou not in:

text = "The quick brown fox"
print("quick" in text)      # True
print("slow"  in text)      # False
print("slow"  not in text)  # True

Comprimento de uma String

len() retorna o número de caracteres em uma string:

s = "Python"
print(len(s))   # 6

empty = ""
print(len(empty))   # 0

Caracteres de Escape

Alguns caracteres não podem ser digitados literalmente dentro de uma string. Python usa uma barra invertida \ para introduzir sequências de escape:

SequênciaCaractere
\nNova linha
\tTabulação
\\Barra invertida literal
\'Aspas simples
\"Aspas duplas
\rRetorno de carro
print("Line one\nLine two")
# Line one
# Line two

print("Name:\tAlice")
# Name:	Alice

path = "C:\\Users\\Alice"
print(path)   # C:\Users\Alice

Para desativar completamente o processamento de escape, prefixe a string com r para criar uma raw string — útil para expressões regulares e caminhos no Windows:

pattern = r"\d+\.\d+"   # treated literally, no escaping needed
print(pattern)           # \d+\.\d+

Veja o capítulo Escape Characters para a lista completa.

Formatação de Strings

Python oferece várias formas de incorporar valores de variáveis dentro de strings.

f-strings (recomendado — Python 3.6+)

Uma f-string é prefixada com f ou F. Expressões dentro de {} são avaliadas em tempo de execução:

name = "Alice"
age  = 30
print(f"My name is {name} and I am {age} years old.")
# My name is Alice and I am 30 years old.

# Expressions work too
print(f"Next year I'll be {age + 1}.")   # Next year I'll be 31.

Método str.format()

python— editable, runs on the server

Formatação com percentual (%) (legado)

Código Python mais antigo usa a formatação com %. Você ainda vai encontrá-la, mas as f-strings são a preferência moderna:

print("Hello, %s!" % "Dave")   # Hello, Dave!
print("Pi ≈ %.2f" % 3.14159)   # Pi ≈ 3.14

Para uma análise completa das opções de formatação, veja os capítulos String Formatting e f-Strings.

Métodos Comuns de String

O tipo str do Python vem com dezenas de métodos integrados. Os mais utilizados estão mostrados abaixo.

Conversão de maiúsculas/minúsculas

s = "Hello, World!"
print(s.upper())       # HELLO, WORLD!
print(s.lower())       # hello, world!
print(s.capitalize())  # Hello, world!
print(s.title())       # Hello, World!
print(s.swapcase())    # hELLO, wORLD!

Busca e contagem

s = "hello, world"
print(s.find("o"))       # 4   — index of first 'o', or -1 if not found
print(s.rfind("o"))      # 8   — index of last 'o'
print(s.count("l"))      # 3   — total occurrences of 'l'
print(s.startswith("he")) # True
print(s.endswith("ld"))   # True

Substituindo substrings

s = "I like cats. Cats are great."
print(s.replace("cats", "dogs"))
# I like dogs. Cats are great.   (only lowercase 'cats' replaced)

print(s.replace("cats", "dogs").replace("Cats", "Dogs"))
# I like dogs. Dogs are great.

Removendo espaços em branco

padded = "  hello  "
print(padded.strip())    # 'hello'   — both ends
print(padded.lstrip())   # 'hello  ' — left end only
print(padded.rstrip())   # '  hello' — right end only

Dividindo e unindo

csv = "apple,banana,cherry"
items = csv.split(",")
print(items)   # ['apple', 'banana', 'cherry']

print(" | ".join(items))   # apple | banana | cherry

Verificando o conteúdo da string

python— editable, runs on the server

Para a referência completa, veja o capítulo String Methods.

Imutabilidade de Strings — Uma Armadilha Comum

Strings não podem ser alteradas no lugar. Tentar atribuir a um índice gera um TypeError:

s = "hello"
# s[0] = "H"   # TypeError: 'str' object does not support item assignment

Para alterar parte de uma string, construa uma nova:

s = "hello"
s = "H" + s[1:]   # slice off everything after index 0 and prepend "H"
print(s)           # Hello

O nome da variável s agora aponta para um objeto string diferente — o "hello" original permanece inalterado (e será coletado pelo garbage collector se nada mais o referenciar).

Strings vs. bytes

Uma string Python (str) armazena texto Unicode. Quando você precisa de dados binários brutos — por exemplo, para escrever em um arquivo no modo binário ou enviar dados pela rede — use bytes em vez disso:

b = b"hello"          # bytes literal
s = b.decode("utf-8") # bytes → str
b2 = s.encode("utf-8") # str → bytes
print(type(b))   # <class 'bytes'>
print(type(s))   # <class 'str'>

Prática

Prática
In Python, which of the following are valid ways for declaring a string?
In Python, which of the following are valid ways for declaring a string?
Was this page helpful?