módulo textwrap para formatação de textos
O módulo textwrap em Python é projetado para realizar a formatação de textos. Ele possui várias funções e uma classe para gerenciar quebras, recuo, espaçamento e outras tarefas relacionadas à formatação de textos. Conheça as principais funcionalidades deste módulo a seguir.
wrap()
O método wrap() quebra um parágrafo único em textos menores para que cada linha tenha um número máximo de caracteres de largura. Ele retorna uma lista de linhas de saída, sem novas linhas finais. Veja um exemplo de como usá-lo:
import textwrap
minha_string_longa = "Nascido no Morro do Livramento, Rio de Janeiro, de uma família pobre, mal estudou em escolas públicas e nunca frequentou universidade.[10] Para o considerado crítico literário norte-americano Harold Bloom, Machado de Assis é o maior escritor negro de todos os tempos,[11] embora outros estudiosos prefiram especificar que Machado era mestiço,[12] filho de um descendente de negros alforriados e de uma portuguesa da ilha de São Miguel. Seus biógrafos notam que, interessado pela boemia e pela corte, lutou para subir socialmente abastecendo-se de superioridade intelectual e da cultura da capital brasileira."
string_formatada = textwrap.wrap(minha_string_longa, width=50)
for linha in string_formatada:
print(linha)
# resultado:
# Nascido no Morro do Livramento, Rio de Janeiro, de
# uma família pobre, mal estudou em escolas públicas
# e nunca frequentou universidade.[10] Para o
# considerado crítico literário norte-americano
# Harold Bloom, Machado de Assis é o maior escritor
# negro de todos os tempos,[11] embora outros
# estudiosos prefiram especificar que Machado era
# mestiço,[12] filho de um descendente de negros
# alforriados e de uma portuguesa da ilha de São
# Miguel. Seus biógrafos notam que, interessado pela
# boemia e pela corte, lutou para subir socialmente
# abastecendo-se de superioridade intelectual e da
# cultura da capital brasileira.
Neste exemplo, primeiro importamos o modulo textwrap. Depois, definimos o texto que desejamos formatar. O método wrap() é usado com o parâmetro width que especifica a largura máxima que o texto deve possuir em cada linha.
fill()
Semelhante ao método wrap(), a função fill() quebra um parágrafo de texto. Porém, diferentemente do metodo wrap(), fill() retorna uma única string com novas linhas inseridas nos locais apropriados. Ele é útil para formatar um texto para caber em uma largura específica, definida com o parâmetro width como ilustrado abaixo:
minha_string_longa = "Para isso, assumiu diversos cargos públicos, passando pelo Ministério da Agricultura, do Comércio e das Obras Públicas, e conseguindo precoce notoriedade em jornais onde publicava suas primeiras poesias e crônicas. Machado de Assis pôde assistir, durante sua vida, que abarca o final da primeira metade do século XIX até os anos iniciais do século XX, a enormes mudanças históricas na política, na economia e na sociedade brasileira e também mundial."
string_formatada = textwrap.fill(minha_string_longa, width=40)
print(string_formatada)
# resultado:
# Para isso, assumiu diversos cargos
# públicos, passando pelo Ministério da
# Agricultura, do Comércio e das Obras
# Públicas, e conseguindo precoce
# notoriedade em jornais onde publicava
# suas primeiras poesias e crônicas.
# Machado de Assis pôde assistir, durante
# sua vida, que abarca o final da primeira
# metade do século XIX até os anos
# iniciais do século XX, a enormes
# mudanças históricas na política, na
# economia e na sociedade brasileira e
# também mundial.
Shorten()
A função shorten() trunca uma string para que ela caiba em uma largura especificada. Ela substitui a parte truncada por um espaço reservado. O espaço padrão é […], mas pode ser personalizado. Veja como usá-lo:
minha_string_longa = "A extensa obra machadiana constitui-se de dez romances, 205 contos,[15] dez peças teatrais, cinco coletâneas de poemas e sonetos, e mais de seiscentas crônicas.[16][17] Machado de Assis é considerado o introdutor do Realismo no Brasil, com a publicação de Memórias Póstumas de Brás Cubas (1881).[18][19] Este romance é posto ao lado de todas suas produções posteriores, Quincas Borba, Dom Casmurro, Esaú e Jacó e Memorial de Aires, ortodoxamente conhecidas como pertencentes à sua segunda fase, em que notam-se traços de crítica social, ironia e até pessimismo, embora não haja rompimento de resíduos românticos. "
string_formatada = textwrap.shorten(minha_string_longa, width=100)
print(string_formatada)
# resultado
# A extensa obra machadiana constitui-se de dez romances, 205 contos,[15] dez peças teatrais, [...]
Neste exemplo, o parâmetro width define o número máximo de caracteres que o texto deve exibir.
indent()
A função indent() adiciona um prefixo, o qual pode ser um espaço, ao início das linhas selecionadas no texto.
minha_string = """
Sua obra foi de fundamental importância para as escolas
literárias brasileiras do século XIX e do século XX
e surge nos dias de hoje como de grande interesse
acadêmico e público para entender o Brasil e o mundo.
"""
string_formatada = textwrap.indent(minha_string, ' ')
print(string_formatada)
# resultado:
# Sua obra foi de fundamental importância para as escolas
# literárias brasileiras do século XIX e do século XX
# e surge nos dias de hoje como de grande interesse
# acadêmico e público para entender o Brasil e o mundo.
dedent()
Essa função remove qualquer espaço em branco comum à esquerda de cada linha em um texto. Ela é útil para limpar strings de várias linhas ou docstrings. Por exemplo, se um texto tiver um recuo que você deseja remover, use a função dedent() antes de quebrá-lo ou preenchê-lo.
minha_string_com_recuo = """
Dessa fase, os críticos destacam que suas melhores obras
são as do que se passou a chamar de "Trilogia Realista".[1]
Sua primeira fase literária é constituída de obras
como Ressurreição, A Mão e a Luva, Helena e Iaiá Garcia,
onde notam-se características herdadas do Romantismo,
ou "convencionalismo", como prefere a crítica moderna.[20]
"""
string_formatada = textwrap.dedent(minha_string_com_recuo).strip()
print(string_formatada)
# resultado:
# Dessa fase, os críticos destacam que suas melhores obras
# são as do que se passou a chamar de "Trilogia Realista".[1]
# Sua primeira fase literária é constituída de obras
# como Ressurreição, A Mão e a Luva, Helena e Iaiá Garcia,
# onde notam-se características herdadas do Romantismo,
# ou "convencionalismo", como prefere a crítica moderna.[20]
Classe TextWrapper
Além dos métodos mostrados acima, o módulo textwrap conta com a classe TextWrapper. Ela fornece mais flexibilidade e controle sobre a formatação de textos. Com ela, podemos definir vários parâmetros que afetam como o texto é quebrado. Alguns de seus parâmetros são:
width: determina o tamanho máximo das linhas quebradas (o padrão é 70 caracteres).
expand_tabs: converte tabulações em espaços.
replace_whitespace: substitui caracteres de espaço em branco por um único espaço.
drop_whitespace: elimina os espaços em branco à esquerda e à direita das linhas.
initial_indent: anexa uma string à primeira linha de saída encapsulada de um texto.
subsequent_indent: anexa uma string a todas as linhas, exceto a primeira.
No exemplo abaixo, usamos width, initial_indent e subsequent_indent para modificar uma string:
from textwrap import TextWrapper
minha_string = "Influenciou grandes nomes das letras, como Olavo Bilac, Lima Barreto, Drummond de Andrade, John Barth, Donald Barthelme e muitos outros. Ainda em vida, alcançou fama e prestígio pelo Brasil e países vizinhos."
wrapper = TextWrapper(width=50, initial_indent='*** ', subsequent_indent='?? ')
nova_string = wrapper.fill(minha_string)
print(nova_string)
# resultado
# *** Influenciou grandes nomes das letras, como
# ?? Olavo Bilac, Lima Barreto, Drummond de
# ?? Andrade, John Barth, Donald Barthelme e muitos
# ?? outros. Ainda em vida, alcançou fama e
# ?? prestígio pelo Brasil e países vizinhos.
Para conhecer mais sobre o módulo textwrap, consulte a documentação oficial do Python.
Veja também:
Concatenações com join() para strings em Python
O que é operador ternário em Python?
F-strings em Strings Multilinhas
Decodificação de strings em Python com decode()
Métodos para Manipular Strings em Python
Módulo Getpass para Prompts de Senhas
Aprenda a comparar textos com Python com Difflib
Módulo textwrap para formatação de textos
Manipulação de arquivos com Python
os.environ: gerenciamento de variáveis de ambiente com Python
Métodos Avançados Do Módulo os
Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.