Получение правильной длины строки в Python для строк с цветовыми кодами ANSI

У меня есть некоторый код Python, который автоматически печатает набор данных в хорошем формате столбцов, включая вставку соответствующих escape-последовательностей ASCII, чтобы раскрасить различные части данных для удобства чтения.

Я в конечном итоге получаю, что каждая строка представляется в виде списка, причем каждый элемент представляет собой столбец с пробелами, так что одинаковые столбцы в каждой строке всегда имеют одинаковую длину. К сожалению, когда я на самом деле иду печатать это, не все столбцы выстраиваются в линию. Я подозреваю, что это связано с escape-последовательностями ASCII - потому чтоlen функция, кажется, не распознает это:

>>> a = '\x1b[1m0.0\x1b[0m'
>>> len(a)
11
>>> print a
0.0

И так, пока каждый столбец имеет одинаковую длину в соответствии сlenНа самом деле они не имеют одинаковую длину при печати на экране.

Есть ли какой-нибудь способ (за исключением хакерства с помощью регулярных выражений, который я бы предпочел не делать), чтобы взять экранированную строку и узнать, какова длина печати, чтобы я мог соответствующим образом расставить пробел? Может быть, какой-нибудь способ просто «напечатать» его обратно в строку и проверить длину этого?

Ответы на вопрос(2)

Ваш ответ на вопрос