Используя \u0332
, я бы определил функцию
from itertools import repeat, chain
def underline(s):
return ''.join(chain.from_iterable(zip(s, repeat("\u0332"))))
Затем запись
heads = ["Name", "Hours Worked", "Hourly Rate", "Taxes Owed", "Net Pay"]
print("{:<20} {:^5} {:>6} {:>10} {:>10}".format(*map(underline, heads)))
underline
превращает строку типа "Name"
в строку "N\u0332a\u0332m\u0332e\u0332"
, то есть он добавляет символ подчеркивания объединения после каждого символа строки для подчеркивания.
Если ваш терминал поддерживает управляющие коды ANSI, рассмотрите что-то вроде
def underline(s):
return f'\x1b[4m{s}\x1b[24m'
вместо этого. Это просто включает режим подчеркивания вашего терминала во время печати заданной строки, а не требует поддержки шрифтов для композиции глифов Unicode.