🛠️ 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étodo | Retorna 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
>>> s.isalpha()
False
>>> p.isalpha()
False
Listagem 7.22 — isdigit>>> "777".isdigit()
True
>>> "1R-4".isdigit()
False
>>> ">10".isdigit()
False
>>> "-5".isdigit()
False
Listagem 7.23 — isdigit vs isnumeric com Unicode>>> umterço = "\u2153"
>>> novetibetano = "\u0F29"
>>> 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.