⬅ Voltar ao Dashboard Capítulo 7 — Strings

🛠️ Métodos de Manipulação de Strings

Seção 7.4–7.8 — Posicionamento, divisão, substituição, remoção e validação

⇄ 7.4 Posicionamento de Strings

Para alinhar texto em colunas ou formatar saídas, o Python oferece os métodos center(), ljust() e rjust(). Todos recebem a largura total desejada e um caractere de preenchimento opcional.

Listagem 7.14 — Centralização com center>>> s = "tigre" >>> print("X" + s.center(10) + "X") X tigre X >>> print("X" + s.center(10, ".") + "X") X..tigre...X
Listagem 7.15 — Alinhamento com ljust e rjust>>> s = "tigre" >>> s.ljust(28) 'tigre ' >>> s.rjust(28) ' tigre' >>> s.ljust(28, ".") 'tigre.......................' >>> s.rjust(28, "-") '-----------------------tigre'

ljust() alinha o texto à esquerda (preenchendo à direita) e rjust() alinha à direita (preenchendo à esquerda). Se a string for maior que a largura especificada, ela não é truncada.

✂️ 7.5 Quebra ou Separação de Strings

O método split() divide uma string em uma lista de substrings com base em um separador. Sem parâmetros, usa qualquer espaço em branco como separador e ignora espaços múltiplos:

Listagem 7.16 — Separação com split>>> s = "um tigre, dois tigres, três tigres" >>> s.split(",") ['um tigre', ' dois tigres', ' três tigres'] >>> s.split(" ") ['um', 'tigre,', 'dois', 'tigres,', 'três', 'tigres'] >>> s.split() ['um', 'tigre,', 'dois', 'tigres,', 'três', 'tigres']

Para dividir uma string que contém múltiplas linhas, use splitlines(). Ele divide nos caracteres de quebra de linha (\n, \r\n, etc.) e ignora a última linha vazia:

Listagem 7.17 — Divisão por linhas com splitlines>>> m = "Uma linha\noutra linha\ne mais uma\n" >>> m.splitlines() ['Uma linha', 'outra linha', 'e mais uma']

🔄 7.6 Substituição de Strings

O método replace(antigo, novo) retorna uma nova string com todas as ocorrências de antigo substituídas por novo. Um terceiro parâmetro opcional limita o número de substituições:

Listagem 7.18 — Substituição com replace>>> s = "um tigre, dois tigres, três tigres" >>> s.replace("tigre", "gato") 'um gato, dois gatos, três gatos' >>> s.replace("tigre", "gato", 1) 'um gato, dois tigres, três tigres' >>> s.replace("tigre", "gato", 2) 'um gato, dois gatos, três tigres' >>> s.replace("tigre", "") 'um , dois s, três s'

Substituir por string vazia equivale a remover todas as ocorrências. Se o primeiro argumento for uma string vazia, o separador é inserido entre cada caractere:

Listagem 7.18 (continuação)>>> s.replace("", "-") '-u-m- -t-i-g-r-e-,-...'

✂️ 7.7 Remoção de Espaços em Branco

Os métodos strip(), lstrip() e rstrip() removem espaços em branco (ou outros caracteres especificados) das extremidades de uma string:

Listagem 7.19 — strip, lstrip e rstrip>>> t = " Olá " >>> t.strip() 'Olá' >>> t.lstrip() 'Olá ' >>> t.rstrip() ' Olá'

Com um parâmetro, os métodos removem qualquer combinação dos caracteres especificados (não uma substring exata) das extremidades:

Listagem 7.20 — strip com parâmetros>>> s = "...///Olá///..." >>> s.lstrip(".") '///Olá///...' >>> s.rstrip(".") '...///Olá///' >>> s.strip("./") 'Olá'

O strip("./") remove qualquer combinação de "." e "/" das duas extremidades até encontrar um caractere que não esteja no conjunto fornecido.

Dica prática: ao ler dados do usuário com input(), é comum aplicar .strip() para eliminar espaços digitados acidentalmente no início ou fim da entrada.

✅ 7.8 Validação por Tipo de Conteúdo

Python oferece uma família de métodos is*() que retornam True ou False conforme o tipo de conteúdo da string:

MétodoRetorna True se...
isalnum()todos os caracteres são letras ou dígitos
isalpha()todos os caracteres são letras
isdigit()todos os caracteres são dígitos (0–9)
isupper()todas as letras são maiúsculas
islower()todas as letras são minúsculas
isspace()todos os caracteres são espaços em branco
isprintable()todos os caracteres são imprimíveis
Listagem 7.21 — isalnum e isalpha>>> s = "125" >>> p = "alô mundo" >>> s.isalnum() True >>> p.isalnum() False # espaço não é alfanumérico >>> s.isalpha() False # dígitos não são letras >>> p.isalpha() False # espaço não é letra
Listagem 7.22 — isdigit>>> "777".isdigit() True >>> "1R-4".isdigit() False >>> ">10".isdigit() False >>> "-5".isdigit() False # sinal negativo não é dígito
Listagem 7.23 — isdigit vs isnumeric com Unicode>>> umterço = "\u2153" # caractere ⅓ >>> novetibetano = "\u0F29" # dígito tibetano 9 >>> umterço.isdigit() False >>> umterço.isnumeric() True >>> novetibetano.isdigit() True >>> novetibetano.isnumeric() True

isnumeric() aceita uma variedade maior de caracteres numéricos Unicode (frações, dígitos de outros sistemas de escrita), enquanto isdigit() é mais restrito.

Listagem 7.24 — isupper e islower>>> s = "ABC" >>> p = "abc" >>> e = "aBc" >>> s.isupper() True >>> s.islower() False >>> p.isupper() False >>> p.islower() True >>> e.isupper() False >>> e.islower() False
Listagem 7.25 — isspace>>> "\t\n\r ".isspace() True >>> "\tAlô".isspace() False
Listagem 7.26 — isprintable>>> "\n\t".isprintable() False >>> "\nAlô".isprintable() False >>> "Alô mundo".isprintable() True

Caracteres de controle como \n (nova linha) e \t (tabulação) não são imprimíveis, pois representam ações e não glifos visíveis.