Python: цветная и стильная печать

Если бы я хотел напечатать цветной текст, я бы просто сделал, используя коды

green = '\033[0;32m'
print green + 'Hello'

и это дает мне зеленый текст. Если я хочу, чтобы текст был полужирным, я бы просто использовал код для полужирного шрифта, это '\033[1m'

Теперь я попытался объединить их как

print bold + green + 'Hello'

где bold - вышеупомянутый код, и это не сработало, дал мне только зеленый текст без жирного шрифта.

В любом случае, чего мне не хватает, чтобы сочетать цвет со стилем?


person mar tin    schedule 07.08.2016    source источник
comment
Полужирный, без цвета, работает?   -  person pathoren    schedule 07.08.2016
comment
Это вопрос о том, как комбинировать коды ANSI, а не о коде Python на самом деле.   -  person Martijn Pieters    schedule 07.08.2016
comment
И они будут разными в зависимости от типа терминала.   -  person cdarke    schedule 07.08.2016
comment
BOLDGREEN = '\ 033 1м \ 033 [32м' [ увидеть это   -  person oscarthecat    schedule 18.10.2017


Ответы (2)


Я могу порекомендовать эту суть Диего Наварро Меллена.

Вы можете комбинировать все, что хотите, делая что-то вроде этого:

with pretty_output(BOLD, FG_GREEN) as out:
    out.write('This is a bold text in green')
person Or Duan    schedule 07.08.2016

Следуя ответу Ор Дуана, оказалось, что код, который я использую для зеленого, хорошо работает сам по себе, но каким-то образом при объединении с другим кодом предотвращает комбинацию стилей.

В сообщенном Gist код зеленого текста:

green = '\033[32m'

поэтому не хватает 0; У меня в моем. С помощью этого кода конкатенация дает результат.

Это потому, что 0 спереди сбрасывается, см. здесь.

person mar tin    schedule 07.08.2016