Как напечатать жирный текст на 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)

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


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' выключит его.


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.