Как напечатать жирный текст на Python?

162

Как напечатать жирный текст на Python?

Например:

print "hello"

Что мне делать, чтобы текст «привет» отображался жирным шрифтом?

Цзя-Ло
источник
2
дубликат цветного текста в терминальных приложениях в Unix . Много ссылок в ответах. Этот ответ написан на C, но легко переводится на Python.
Джо
6
Какой терминал вы используете? Вы на Unix или Windows?
Sjoerd
Я использую сафари. Только что узнал, что я могу использовать теги HTML в Python.
Цзя-Ло

Ответы:

379
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)
Boubakr
источник
15
Мне нравится, что вы не просто выделили жирным шрифтом, но создали целый класс, чтобы они могли ссылаться на него и помогать всем пользователям просматривать. Спасибо.
GreenHawk1220
3
Я буду использовать это как дикт, а не класс. Спасибо!
17
6
Это печатает следующее:[1mHello World ![0m
Работа над моей установкой: Ubuntu 19.10, Python 3.7
Elouan Keryell-Even
Можно ли сочетать жирный шрифт с цветом? @Boubakr
Alper
62

Использовать это:

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

И чтобы вернуться к нормальной жизни:

print '\033[0m'

Эта страница является хорошим справочником для печати в цветах и ​​размерах шрифтов. Перейдите в раздел с надписью «Установить графический режим:»

И обратите внимание, это не будет работать на всех операционных системах, но вам не нужны никакие модули.

аддисон
источник
31

Вы можете использовать termcolor для этого:

 sudo pip install termcolor

Чтобы напечатать цветной жирный шрифт:

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

Для получения дополнительной информации см. Termcolor на PyPi .

simple-colors - это еще один пакет с похожим синтаксисом:

 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должно быть жирным.

aayoubi
источник
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')

ОБНОВЛЕНО:

Я написал простой модуль под названием colors.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.
Диего Наварро
В любом случае, я сделал свой собственный модуль Python, чтобы решить эту проблему, проверьте @minerals ;-)
Диего Наварро
8
print '\033[1m  Your Name  \033[0m'

\ 033 [1m - это Unicode для полужирного шрифта в терминале \ 033 [0m - это Unicode для завершения отредактированного текста и обратного форматирования текста по умолчанию !!!!!

если вы не используете \ 033 [0m, то весь следующий текст терминала станет жирным шрифтом !!!!!!!!!

Бхавик Сахия
источник
пожалуйста, добавьте некоторые объяснения
Харша Бияни
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; 0m' выключит его.

Maciek
источник
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'))

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

PythonMaster202
источник
Спасибо! Нам просто нужно сначала установить simple_colors:pip install simple_colors
yzerman