user1359892
user1359892

Reputation: 31

Python: How to format large text outputs to be 'prettier' and user defined

Ahoy StackOverlow-ers!

I have a rather trivial question but it's something that I haven't been able to find in other questions here or on online tutorials: How might we be able to format the output of a Python program that so that it fits a certain aesthetic format without any extra modules?

The aim here is that I have a block of plain text like that from a newspaper article, and I've filtered through it earlier to extract just the words I want but now I'd like to print it out in the format that each line only has 70 characters along it and any word won't be broken if it should normally fall on a line break.

Using .ljust(70) as in stdout.write(article.ljust(70)) doesn't seem to do anything to it.

The other thing about not having words broken would be as:

Latest news tragic m

urder innocent victi

ms family quiet neig

hbourhood

Looking more like this:

Latest news tragic

murder innocent

victims family 

quiet neighbourhood

Thank you all kindly in advance!

Upvotes: 2

Views: 3820

Answers (3)

satran
satran

Reputation: 1242

I'm sure this can be improved on. Without any libraries:

def wrap_text(text, wrap_column=80):
    sentence = ''
    for word in text.split(' '):
        if len(sentence + word) <= 70:
            sentence += ' ' + word
        else:
            print sentence
            sentence = word
    print sentence

EDIT: From the comment if you want to use Regular expressions to just pick out words use this:

import re

def wrap_text(text, wrap_column=80):
    sentence = ''
    for word in re.findall(r'\w+', text):
        if len(sentence + word) <= 70:
            sentence += ' ' + word
        else:
            print sentence
            sentence = word
    print sentence

Upvotes: 0

HYRY
HYRY

Reputation: 97331

use textwrap module:

http://docs.python.org/library/textwrap.html

Upvotes: 0

Nick Craig-Wood
Nick Craig-Wood

Reputation: 54107

Checkout the python textwrap module (a standard module)

>>> import textwrap
>>> t="""Latest news tragic murder innocent victims family quiet neighbourhood"""
>>> print "\n".join(textwrap.wrap(t, width=20))
Latest news tragic
murder innocent
victims family quiet
neighbourhood
>>> 

Upvotes: 8

Related Questions