Полужирное форматирование в консоли Python

Я определил список в коде Python.

list = ['kumar','satheesh','rajan']    
BOLD = '\033[1m'

for i, item in enumerate(list):
   list[i] = BOLD + item

print (list)

Но я получаю output as ['\x1b[1mfsdfs', '\x1b[1mfsdfsd', '\x1b[1mgdfdf']

Но требуемый вывод: ['kumar','satheesh','rajan']

Как format list elements в bold с помощью python?


person mvsat    schedule 22.05.2018    source источник
comment
Пожалуйста, рассмотрите возможность использования другого имени переменной для вашего списка... список не является принудительным ключевым словом, но это создаст непредвиденные проблемы, если вы используете его в качестве имени вашей переменной.   -  person imperialgendarme    schedule 22.05.2018
comment
Возможный дубликат Как распечатать цветной /жирный вывод на терминал в Python?   -  person smci    schedule 22.05.2018
comment
Вы выделяете жирным шрифтом квадратную скобку, если действительно хотите печатать жирным шрифтом перед печатью массива.   -  person mkHun    schedule 22.05.2018


Ответы (3)


Также необходимо указать END = '\033[0m':

list = ['kumar','satheesh','rajan']

BOLD = '\033[1m'
END = '\033[0m'

for each in list:
    print('{}{}{}'.format(BOLD, each, END))

Чтобы выделить сам список жирным шрифтом, например ['kumar', 'satheesh', 'rajan']:

print('{}{}{}'.format(BOLD, list, END))
person Austin    schedule 22.05.2018
comment
Пожалуйста, закройте как дубликат Как мне распечатать цветной/жирный вывод на терминал в Python? - person smci; 22.05.2018
comment
Мне нужно, чтобы вывод был заключен в список. Только внутри списка, выделенные жирным шрифтом буквы не идут - person mvsat; 22.05.2018
comment
Ух ты! Помогает. Спасибо. - person mvsat; 22.05.2018

попробуйте распечатать следующим образом

for each in list:
    print(each)

ниже приведен вывод введите здесь описание изображения

person InAFlash    schedule 22.05.2018
comment
Я не минусовал, и я знаю, что это сработает. Но ответы только на код считаются плохими на SO. Объяснение почему это работает таким образом, значительно улучшит ваш ответ... - person Serge Ballesta; 22.05.2018
comment
Ваш код будет печатать все выходные данные жирным шрифтом, даже если элемент не имеет префикса escape-строки, потому что он не заканчивается на «\033[0m». - person Ancora Imparo; 22.05.2018
comment
Мне нужно, чтобы вывод был заключен в список. Только внутри списка жирные буквы не идут @Kalyan - person mvsat; 22.05.2018
comment
вы пытаетесь сделать это в консоли ipython? - person InAFlash; 22.05.2018

Калян указал возможный способ, но не смог объяснить, почему.

Когда Python попросит распечатать список, он выведет маркеры начала и конца списка ([]) и представление всех элементов списка. Для строки это означает, что непечатаемые символы будут экранированы.

Вы мало что можете сделать, кроме как распечатать элементы по отдельности.

for i lst:
    print i

или создайте уникальную строку с соединением:

string_to_output = '[' + ', '.join(lst) + ']'
print(string_to_output)

Между прочим, как объяснил Остин, '\x01b[1m представляет собой последовательность, чтобы попросить терминал, совместимый с ANSI, перейти в полужирный режим, поэтому вы должны время от времени возвращаться в нормальный режим с помощью '\x01b[0m.

И помните: ANSI распространен в эмуляциях терминалов Linux, но он все еще далек от универсальности... Просто попробуйте использовать export TERM=tvi950 перед его использованием (и погуглите vt100 и tvi950, чтобы понять больше)...

person Serge Ballesta    schedule 22.05.2018