Як надрукувати жирний текст у Python?


162

Як надрукувати жирний текст у Python?

Наприклад:

print "hello"

Що робити, щоб текст "привіт" відображався жирним шрифтом?


2
дублікат кольорового тексту в термінальних додатках в unix . Багато посилань у відповідях. Ця відповідь є на C, але легко перекладається на Python.
Джо

6
Який термінал ви використовуєте? Ви перебуваєте на Unix чи Windows?
Sjoerd

Я використовую сафарі. Щойно з’ясував, я можу використовувати теги HTML у python.
Jia-Luo

Відповіді:


378
class color:
   PURPLE = '\033[95m'
   CYAN = '\033[96m'
   DARKCYAN = '\033[36m'
   BLUE = '\033[94m'
   GREEN = '\033[92m'
   YELLOW = '\033[93m'
   RED = '\033[91m'
   BOLD = '\033[1m'
   UNDERLINE = '\033[4m'
   END = '\033[0m'

print(color.BOLD + 'Hello World !' + color.END)

15
Мені подобається те, що ви не просто зробили сміливим, але створили цілий клас, щоб вони посилалися та допомагали всім користувачам, які переглядають. Дякую.
GreenHawk1220

3
Я буду використовувати це як диктант, а не клас. Дякую!
dvlden

6
[1mHello World ![0m

Працюю над моєю установкою: ubuntu 19.10, python 3.7
Elouan Keryell-Even

Чи можна також поєднувати жирне з кольором? @Boubakr
alper

62

Використовуй це:

print '\033[1m' + 'Hello'

І щоб повернутися до нормального:

print '\033[0m'

Ця сторінка є гарною орієнтиром для друку в кольорах та вазі шрифту. Перейдіть до розділу "Встановити графічний режим:"

І зауважте, це не буде працювати у всіх операційних системах, але вам не потрібні модулі.


31

Для цього можна використовувати термінколори:

 sudo pip install termcolor

Щоб надрукувати кольоровий жирний шрифт:

 from termcolor import colored
 print(colored('Hello', 'green', attrs=['bold']))

Для отримання додаткової інформації дивіться термінкольору на PyPi .

simple-color - це ще один пакет із подібним синтаксисом:

 from simple_colors import *
 print(green('Hello', ['bold'])

Еквівалент у колорамі може бути Style.BRIGHT.


8
Якби мені довелося здогадатися, хтось спротив це, бо це не відповіло на власне питання, як надрукувати щось жирним шрифтом
Крістіан

Ваше право, було оновлено. Вибачте, хлопці.
Олу Сміт

22

У прямому комп’ютерному програмуванні немає такого поняття, як "друк жирного тексту". Давайте трохи зробимо резервну копію і зрозуміємо, що ваш текст - це рядок байтів, а байти - це лише розряди бітів. До комп’ютера, ось ваш текст "привіт", у двійковій формі .

0110100001100101011011000110110001101111

Кожен або нуль - це трохи. Кожні вісім біт - байт. Кожен байт - це такий рядок, як у Python 2.x, одна літера / число / розділовий знак (називається символом). Так, наприклад:

01101000 01100101 01101100 01101100 01101111
h        e        l        l        o

Комп'ютер переводить ці біти на літери, але в традиційній рядку (званій рядком ASCII) немає нічого, що вказує на жирний текст. У рядку Unicode, який працює трохи інакше, комп'ютер може підтримувати символи міжнародної мови, як, наприклад, китайська, але, знову ж таки, нічого не можна сказати, що якийсь текст є жирним, а якийсь текст - ні. Також немає явного шрифту, розміру тексту тощо.

Що стосується друку HTML, ви все одно виведете рядок. Але комп'ютерна програма, що читає цей рядок (веб-браузер), запрограмована для інтерпретації тексту на зразок this is <b>bold</b>"це жирним шрифтом ", коли він перетворює рядок літер у пікселі на екрані. Якби весь текст був WYSIWYG, потреба в самому HTML була б пом’якшена - ви просто вибрали текст у своєму редакторі та вмілили його замість того, щоб вводити HTML.

Інші програми використовують різні системи - багато відповідей пояснювали зовсім іншу систему друку жирного тексту на терміналах. Я радий, що ти дізнався, як робити те, що ти хочеш робити, але в якийсь момент ти захочеш зрозуміти, як працюють струни та пам'ять.


9
Як незадовільний , як ця відповідь може здатися, що це , ймовірно, один , який найбільш правильно відповідає на питання , як просили . Це взагалі не питання Python, а скоріше питання про те, що робиш .
Іоанн Y

8
Вся справа в тому, що всі, хто цікавиться відповіддю на це питання, розуміють бінарне та як воно використовується для подання рядків. Нас цікавить, як використовувати python, щоб текст виглядав жирним, на що відповідь вище. Ця відповідь є надто педантичною.
Тревор

16

Це залежить, якщо ви використовуєте linux / unix:

>>> start = "\033[1m"
>>> end = "\033[0;0m"
>>> print "The" + start + "text" + end + " is bold."
The text is bold.

Слово textмає бути жирним.


13

Перевірте колораму . Це не обов'язково допомагає жирним шрифтом ... але ви можете робити кольоровий вихід у Windows та Linux та керувати яскравістю:

from colorama import *
init(autoreset=True)
print Fore.RED + 'some red text'
print Style.BRIGHT + Fore.RED + 'some bright red text'

13

У Python є дуже корисний модуль для форматування тексту (жирний, підкреслення, кольори ..). Він використовує curseslib, але це дуже прямо.

Приклад:

from terminal import render
print render('%(BG_YELLOW)s%(RED)s%(BOLD)sHey this is a test%(NORMAL)s')
print render('%(BG_GREEN)s%(RED)s%(UNDERLINE)sAnother test%(NORMAL)s')

ОНОВЛЕНО:

Я написав простий модуль під назвою color.py, щоб зробити це трохи пітонічнішим:

import colors

with colors.pretty_output(colors.BOLD, colors.FG_RED) as out:
    out.write("This is a bold red text")

with colors.pretty_output(colors.BG_GREEN) as out:
    out.write("This output have a green background but you " + 
               colors.BOLD + colors.FG_RED + "can" + colors.END + " mix styles")

2
ImportError: No module named terminal ImportError: No module named render Насправді це єдиний сайт, який я міг знайти про модуль «термінал». Будь ласка, докладно.
корисні копалини

Наведене вище посилання використовувалося для утримання terminalмодуля, але вони перенаправляли сторінку. Ось код, кешований Google.
Дієго Наварро

У будь-якому випадку я створив власний модуль пітона для вирішення цього питання, перевірте це @minerals ;-)
Дієго Наварро

8
print '\033[1m  Your Name  \033[0m'

\ 033 [1м - це однокодовий жирний шрифт у терміналі \ 033 [0м - це однокодовий кінець для кінця відредагованого тексту та зворотнього формату тексту за замовчуванням !!!!!

якщо ви не використовуєте \ 033 [0м, ніж усі майбутні тексти терміналу стануть жирними !!!!!!!!!


будь ласка, додайте пояснення
Харша Біяні

2
Будь ласка, прочитайте іншу відповідь, перш ніж відповісти! На це запитання є багато правильних відповідей з більшою кількістю пояснень. Ви нічого корисного не додаєте.
Мохаммед Деган

6

Встановіть termcolorмодуль

sudo pip install termcolor

а потім спробуйте це для кольорового тексту

from termcolor import colored
print colored('Hello', 'green')

або це для жирного тексту:

from termcolor import colored
print colored('Hello', attrs=['bold'])

У Python 3 ви можете альтернативно використовувати cprintв якості заміни для вбудованого вбудованого додатку printдодатковий другий параметр для кольорів або attrsпараметр для жирних (та інших атрибутів, таких як underline) на додаток до звичайних printаргументів, названих на зразок fileабо end.

import sys
from termcolor import cprint
cprint('Hello', 'green', attrs=['bold'], file=sys.stderr)

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


3

Деякі термінали дозволяють друкувати кольоровий текст. Деякі кольори мають вигляд, якщо вони "жирні". Спробуйте:

print ('\033[1;37mciao!')

Послідовність '\ 033 [1; 37m' робить деякі термінали для початку друку "яскраво-білим", який може виглядати трохи як напівжирний білий. '\ 033 [0; 0м' вимкне його.


3

Якщо припустити, що ви справді маєте на увазі "друк" на реальному терміналі друку:

>>> text = 'foo bar\r\noof\trab\r\n'
>>> ''.join(s if i & 1 else (s + '\b' * len(s)) * 2 + s
...         for i, s in enumerate(re.split(r'(\s+)', text)))
'foo\x08\x08\x08foo\x08\x08\x08foo bar\x08\x08\x08bar\x08\x08\x08bar\r\noof\x08\
x08\x08oof\x08\x08\x08oof\trab\x08\x08\x08rab\x08\x08\x08rab\r\n'

Просто надішліть це своєму stdout.


2

Проста сміливість - дворядковий код

У python 3 ви можете використовувати colorama - simple_colors: (Сторінка простих кольорів: https://pypi.org/project/simple-colors/ - перейдіть до заголовка "Використання".) Перед тим, як зробити те, що нижче, переконайтеся, що ви pip install simple_colours.

from simple_colors import *
print(green('hello', 'bold'))

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


Дякую! Нам просто потрібно спочатку встановити simple_colors:pip install simple_colors
yzerman
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.