Como imprimo texto em negrito em Python?


162

Como imprimo texto em negrito em Python?

Por exemplo:

print "hello"

O que devo fazer para que o texto "olá" seja exibido em negrito?


2
duplicado de texto colorido em aplicações terminais em unix . Muitos links nas respostas. Essa resposta está em C, mas pode ser facilmente traduzida para Python.
Joe

6
Qual terminal você está usando? Você está no Unix ou no Windows?
Sjoerd

estou usando safari. Acabei de descobrir que posso usar tags HTML em python.
precisa saber é o seguinte

Respostas:


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
Gosto da maneira como você não ousou, mas criou uma classe inteira para que eles fizessem referência e ajudassem todos os usuários a visualizar. Obrigado.
precisa saber é o seguinte

3
Vou usar isso como ditado, não como classe. Obrigado!
dvlden

6
Está imprimindo o seguinte:[1mHello World ![0m

Trabalhando na minha configuração: ubuntu 19.10, python 3.7
Elouan Keryell-Even 13/03

Posso combinar negrito com cores também? @Boubakr
alper

62

Usa isto:

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

E para voltar ao normal:

print '\033[0m'

Esta página é uma boa referência para impressão em cores e pesos de fonte. Vá para a seção que diz 'Definir modo gráfico:'

E observe que isso não funcionará em todos os sistemas operacionais, mas você não precisa de nenhum módulo.


31

Você pode usar termcolor para isso:

 sudo pip install termcolor

Para imprimir um negrito colorido:

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

Para mais informações, consulte termcolor no PyPi .

simple-colors é outro pacote com sintaxe semelhante:

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

O equivalente em colorama pode ser Style.BRIGHT.


8
Se eu tivesse que adivinhar que alguém votou negativamente nisso, porque não respondeu à pergunta real de como imprimir algo em negrito.
Christian

Você está certo, houve uma atualização. Desculpe por esses caras.
Olu Smith

22

Na programação direta de computadores, não existe "impressão em negrito". Vamos voltar um pouco e entender que o seu texto é uma sequência de bytes e bytes são apenas pacotes de bits. Para o computador, aqui está o seu texto "olá", em binário .

0110100001100101011011000110110001101111

Cada um ou zero é um pouco. A cada oito bits é um byte. Cada byte é, em uma string como a do Python 2.x, um item de letra / número / pontuação (chamado de caractere). Então, por exemplo:

01101000 01100101 01101100 01101100 01101111
h        e        l        l        o

O computador converte esses bits em letras, mas em uma sequência tradicional (chamada de sequência ASCII), não há nada para indicar texto em negrito. Em uma string Unicode, que funciona de maneira um pouco diferente, o computador pode suportar caracteres de idiomas internacionais, como chineses, mas, novamente, não há nada a dizer que algum texto está em negrito e outro não. Também não há fonte explícita, tamanho do texto etc.

No caso de imprimir HTML, você ainda está produzindo uma string. Mas o programa de computador que lê essa sequência (um navegador da Web) é programado para interpretar o texto como this is <b>bold</b>"isto está em negrito " quando converte sua sequência de letras em pixels na tela. Se todo o texto fosse WYSIWYG, a necessidade de HTML em si seria atenuada - você apenas selecionaria o texto em seu editor e o colocaria em negrito em vez de digitar o HTML.

Outros programas usam sistemas diferentes - muitas respostas explicam um sistema completamente diferente para imprimir texto em negrito nos terminais. Fico feliz que você tenha descoberto como fazer o que quer fazer, mas em algum momento você precisará entender como as strings e a memória funcionam.


9
Por mais insatisfatória que essa resposta possa parecer, é provavelmente a que melhor responde à pergunta, conforme solicitado . Não é uma questão de Python, mas uma questão de o que está fazendo a renderização .
John Y

8
O problema é que todos os interessados ​​na resposta a essa pergunta entendem binário e como é usado para representar strings. Estamos interessados ​​em como usar python para tornar o texto em negrito, o que é respondido acima. Esta resposta é muito pedante.
Trevor

16

Isso depende se você estiver usando linux / unix:

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

A palavra textdeve estar em negrito.


13

Confira o colorama . Isso não ajuda necessariamente em negrito ... mas você pode fazer impressões coloridas no Windows e Linux e controlar o brilho:

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

13

Existe um módulo muito útil para formatar texto (negrito, sublinhado, cores ..) no Python. Ele usa curseslib, mas é muito simples de usar.

Um exemplo:

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')

ATUALIZADA:

Eu escrevi um módulo simples chamado colors.py para tornar isso um pouco mais pitônico:

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 Na verdade, este é o único site que eu pude encontrar sobre o módulo "terminal". Por favor elabore.
minerals

O link acima costumava conter o terminalmódulo, mas eles redirecionavam a página. Aqui está o código armazenado em cache pelo google.
Diego Navarro

De qualquer forma, eu fiz o meu próprio módulo python para resolver isso, confira @minerals ;-)
Diego Navarro

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

\ 033 [1m é o unicode para negrito no terminal \ 033 [0m é o unicode para finalizar o texto editado e retornar o formato de texto padrão !!!!!

se você não usar \ 033 [0m, todo o texto do terminal ficará em negrito !!!!!!!!!


Por favor, adicione um pouco de explicação
Harsha Biyani

2
Por favor, leia outra resposta antes de responder! Esta pergunta tem muitas respostas corretas com mais explicações. Você não está adicionando nada de útil.
Mohammad Dehghan

6

Instale o termcolormódulo

sudo pip install termcolor

e tente isso para texto colorido

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

ou isso para texto em negrito:

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

Como alternativa, no Python 3 você pode usar cprintcomo um substituto para o built-in print, com o segundo parâmetro opcional para cores ou attrspara negrito (e outros atributos como underline), além dos printargumentos nomeados normais , como fileou end.

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

Divulgação completa, esta resposta baseia-se fortemente na resposta de Olu Smith e foi planejada como uma edição , o que reduziria consideravelmente o ruído nesta página, mas devido ao conceito equivocado de alguns revisores sobre o que uma edição deveria ser, agora sou forçado para fazer disso uma resposta separada.


3

Alguns terminais permitem imprimir texto colorido. Algumas cores se parecem com "negrito". Experimentar:

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

A sequência '\ 033 [1; 37m' faz com que alguns terminais comecem a imprimir em "branco brilhante", que pode parecer um pouco em branco em negrito. '\ 033 [0; 0m' o desativará.


3

Supondo que você realmente queira dizer "imprimir" em um terminal de impressão real :

>>> 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'

Apenas envie isso para o seu stdout.


2

Negrito Simples - Código de Duas Linhas

No python 3, você pode usar colorama - simple_colors: (página Simple Colors: https://pypi.org/project/simple-colors/ - vá para o título 'Uso'.) Antes de fazer o que está abaixo, verifique se você pip install simple_colours.

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

insira a descrição da imagem aqui


Obrigado! Nós só precisamos instalar simple_colors:pip install simple_colors
yzerman 30/01
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.