avatar Bite 53. Convert text into multiple columns

You run a news site and you got feedback that people read more if articles are printed in 2 or more columns instead of long walls of text.

Oh no! There are 200 articles in the database that need to be reformatted!

The good news though is that you know Python so you decide to come up with a nice function to do this tedious work for you.

And that's where our Bite comes in: complete text_to_columns which takes a text and splits it into columns (COL_WIDTH is set to 20).

The amount of double newlines (\n\n) in the text decides how many columns there will be so we can assume you are delivered the text in this preformatted way.

It's best to show you some examples how this would work, see the examples here:

1 paragraph == 1 columns:

    text = """My house is small but cosy."""
text_to_columns(text) produces:

    My house is small
    but cosy.

2 paragraphs == 2 columns:

    text = """My house is small but cosy.

    It has a white kitchen and an empty fridge."""
text_to_columns(text) produces:

    My house is small         It has a white
    but cosy.                 kitchen and an empty
                              fridge.

3 paragraphs == 3 columns:

    text = """My house is small but cosy.

    It has a white kitchen and an empty fridge.

    I have a very comfortable couch, people love to sit on it."""
text_to_columns(text) produces:

    My house is small         It has a white            I have a very
    but cosy.                 kitchen and an empty      comfortable couch,
                              fridge.                   people love to sit
                                                        on it.

4 paragraphs == 4 columns:

    text = """My house is small but cosy.

    It has a white kitchen and an empty fridge.

    I have a very comfortable couch, people love to sit on it.

    My mornings are filled with coffee and reading, if only I had a garden"""
text_to_columns(text) produces:

    My house is small         It has a white            I have a very             My mornings are
    but cosy.                 kitchen and an empty      comfortable couch,        filled with coffee
                              fridge.                   people love to sit        and reading, if only
                                                        on it.                    I had a garden

Get to know the the standard library ... we reckon you probably want to leverage at least 2 modules for this. As this is an Advanced Bite we leave it at that. Good luck and have fun!

Login and get coding
go back Advanced level
Bitecoin 4X

109 out of 111 users completed this Bite.
Will you be Pythonista #110 to crack this Bite?
Resolution time: ~80 min. (avg. submissions of 5-240 min.)
Pythonistas rate this Bite 5.88 on a 1-10 difficulty scale.
» Up for a challenge? 💪

We use Python 3.8