Python Forum
align_columns - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: General (https://python-forum.io/forum-1.html)
+--- Forum: Code sharing (https://python-forum.io/forum-5.html)
+--- Thread: align_columns (/thread-21838.html)



align_columns - Skaperen - Oct-17-2019

i've needed this command many times and only today decided to finally code it. i'm sure it is not as simple or pythonic as it could be. i made it for a command line environment where i can pipe the (non-aligned columns) output of one command to the input of another. it can also take lines from command line arguments. this is untested in Python2.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from sys import argv,stdin

argv.pop(0)
size = []
hold = []
for data in argv if argv else stdin:
    for line in data.splitlines():
        cols = tuple(line.split())
        hold.append(cols)
        x = len(cols)
        y = len(size)
        if y<x:
            size[:] = size+(x-y)*[1]
        for n in range(x):
            size[n] = max(size[n],len(cols[n]))

for cols in hold:
    new = []
    n = 0
    for col in cols:
        if col.isdecimal():
            new.append(col.rjust(size[n]))
        else:
            new.append(col.ljust(size[n]))
        n += 1
    print(' '.join(new))