From: Scott Gasch Date: Sat, 24 Apr 2021 00:17:14 +0000 (-0700) Subject: Columnify text. X-Git-Url: https://wannabe.guru.org/gitweb/?a=commitdiff_plain;h=7accf1acb956f55e875b863c53989fd1950e4b5b;p=python_utils.git Columnify text. --- diff --git a/text_utils.py b/text_utils.py index a71a99d..3b7a43e 100644 --- a/text_utils.py +++ b/text_utils.py @@ -2,6 +2,7 @@ """Utilities for dealing with "text".""" +from collections import defaultdict import math import sys from typing import List, NamedTuple @@ -151,3 +152,18 @@ def justify_text(text: str, *, width: int = 80, alignment: str = "c") -> str: if len(line) > 0: retval += "\n" + line[1:] return retval[1:] + + +def generate_padded_columns(text: List[str]) -> str: + max_width = defaultdict(int) + for line in text: + for pos, word in enumerate(line.split()): + max_width[pos] = max(max_width[pos], len(word)) + + for line in text: + out = "" + for pos, word in enumerate(line.split()): + width = max_width[pos] + word = justify_string(word, width=width, alignment='l') + out += f'{word} ' + yield out