[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Print formatting

On 2019-10-18 18:03, Jagga Soorma wrote:
> Hello,
> I am new to python and trying to write a script that outputs some data
> about users.  I was able to write it and dump the data but can't seem
> to align the output in column 2 correctly.  Here is what I am trying
> to do:
> --
> output:
> user1     data1
> username2             data2
> user3     data3
> snip from script:
> print(str(temp_list[0]) + "\t\t" + str(temp_list[1]))
> --
> Adding the tabs does not seem to work and I am sure there is a better
> way to do this.  Any help would be appreciated.
A tab advances the output position to the next tab stop, but there's no 
universal standard for where those tab stops are, although they're 
commonly at every 8 characters, assuming a monospaced (fixed-width) font.
In your example, if the tabs are at every 8 characters then you'll get:

         |       | <= The tab positions
user1   data1
username2       data2
user3   data3

"username2" has already passed the first tab, so it advances to the 
second tab, causing the misalignment.

The simplest solution, if you're using a monospaced font, is to use 
spaces instead. Find the width of the first column (the longest entry in 
the first column is 9 characters) and then pad all of the first entries 
with spaces to that width (use string formatting or the .just method) 
when outputting each line.