Формат выравнивания строк не работает с раскраской ANSI - PullRequest
0 голосов
/ 26 марта 2020

Я использую Python 3.6, пытаясь выяснить, почему форматирование выравнивания строк не работает при использовании цветовых кодов ANSI. Я нашел 2 сообщения, которые предполагают, что включение цветовых кодов увеличивает длину строки, поэтому отступы должны быть соответствующим образом скорректированы, но, похоже, это не то, с чем я столкнулся. Например,

Без цветовой кодировки выравнивание по правому краю работало просто отлично. txt=['a','b','c'] print(('{:>20}'*3).format(*txt)) a b c

При добавленном цветовом коде общая длина строки равна 10 и должна вписываться в ширину поля, но не похоже, что формат выравнивания был применен к 'b'. txt2=['a','\u001b[43mb\u001b[0m','c'] print(len(txt2[1])) 10 print(('{:>20}'*3).format(*txt2)) a b c

Чтобы решить эту проблему, мне пришлось явным образом дополнить строку следующим образом: txt3=['a','\u001b[43m'+'{:>20}'.format('b')+'\u001b[0m','c'] print(('{:>20}'*3).format(*txt3)) a b c
1. Кто-нибудь может объяснить это поведение?
2. В целом, как лучше всего комбинировать раскраска и форматирование строк в ситуациях, когда цвет и отступы являются условными (т. е. сгенерированы в сценарии)

Вот два поста, которые я нашел, которые наиболее актуальны, но я не смог дополнить их комментариями / вопросы: - (
`` str.format () `Python, символы заливки и цвета ANSI
Выравнивание строк не работает с цветами ANSI

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...