Python: формататор строк, чтобы получить подчеркнутый заголовок - PullRequest
2 голосов
/ 08 марта 2019

Чтобы структурировать вывод на консоль, я хочу напечатать некоторую информацию и начать с подчеркнутого заголовка.Но как сделать это красиво, не создавая дополнительную переменную?

Прямо сейчас я делаю это так:

print("{:s}\n{:s}\n".format("This is an underlined headline.", len("This is an underlined headline.") * "-"))

что дает мне желаемый результат:

This is an underlined headline.
-------------------------------

Но этот код плохой.Есть ли лучшая форматная строка для этого?

print("{0:s}\n?????\n".format("This is an underlined headline.", "-"))

Спасибо:)

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Возможно, попробуйте использовать escape-последовательности ANSI

class Format:
    end = '\033[0m'
    underline = '\033[4m'

print(Format.underline + 'Your text here' + Format.end)

Будет напечатан подчеркнутый текст, для просмотра всей документации по escape-последовательности ANSI нажмите здесь

0 голосов
/ 09 марта 2019

Существует символ Unicode '\u0332', КОМБИНИРУЮЩИЙ LOW LINE *, который действует как подчеркивание на символе, который предшествует ему в строке. Так что вы можете попробовать:

print('{:s}'.format('\u0332'.join('This is an underlined headline.')))

Какой должен создать подчеркнутую строку:

T̲h̲i̲s̲ ̲i̲s̲ ̲a̲n̲ ̲u̲n̲d̲e̲r̲l̲i̲n̲e̲d̲ ̲h̲e̲a̲d̲l̲i̲n̲e̲.

Однако внешний вид вывода может зависеть от приложения, которое отображает вывод, и от используемых шрифтов. Мой браузер выдает подчеркнутую строку, мой (Linux) терминал отображает ее так, как если бы за каждым символом следовало подчеркивание.

* Существует также '\u0333', КОМБИНИРУЮЩАЯ ДВОЙНАЯ НИЗКАЯ ЛИНИЯ, для двойного подчеркивания.

...