¿Cómo imprimo texto en negrita en Python?


162

¿Cómo imprimo texto en negrita en Python?

Por ejemplo:

print "hello"

¿Qué debo hacer para que el texto "hola" se muestre en negrita?


2
duplicado de texto en color en aplicaciones de terminal en unix . Muchos enlaces en las respuestas. Esa respuesta está en C, pero se traduce fácilmente a Python.
Joe

66
¿Qué terminal estás usando? ¿Estás en Unix o Windows?
Sjoerd

Estoy usando safari. Me acabo de enterar que puedo usar etiquetas HTML en Python.
Jia-Luo

Respuestas:


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
Me gusta la forma en que no solo escribiste en negrita, sino que creaste una clase completa para que la consultaran y ayudaran a todos los usuarios a verla. Gracias.
GreenHawk1220

3
Voy a usar esto como dictado, no como una clase. ¡Gracias!
dvlden

66
[1mHello World ![0m

Trabajando en mi configuración: ubuntu 19.10, python 3.7
Elouan Keryell-Even

¿Puedo combinar negrita con color también? @Boubakr
Alper

62

Utilizar este:

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

Y para volver a la normalidad:

print '\033[0m'

Esta página es una buena referencia para imprimir en colores y pesos de fuentes. Vaya a la sección que dice 'Establecer modo gráfico:'

Y tenga en cuenta que esto no funcionará en todos los sistemas operativos, pero no necesita ningún módulo.


31

Puede usar termcolor para esto:

 sudo pip install termcolor

Para imprimir una negrita de color:

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

Para obtener más información, consulte termcolor en PyPi .

simple-colors es otro paquete con una sintaxis similar:

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

El equivalente en colorama puede ser Style.BRIGHT.


8
Si tuviera que adivinar que alguien rechazó esto porque no respondió la pregunta real de cómo imprimir algo en negrita.
Christian

A la derecha, ha habido una actualización. Perdón por eso chicos.
Olu Smith

22

En la programación de computadoras directa, no existe tal cosa como "imprimir texto en negrita". Retrocedamos un poco y comprendamos que su texto es una cadena de bytes y los bytes son solo paquetes de bits. Para la computadora, aquí está su texto "hola", en binario .

0110100001100101011011000110110001101111

Cada uno o cero es un bit. Cada ocho bits es un byte. Cada byte es, en una cadena como esa en Python 2.x, un elemento de letra / número / puntuación (llamado carácter). Así por ejemplo:

01101000 01100101 01101100 01101100 01101111
h        e        l        l        o

La computadora traduce esos bits en letras, pero en una cadena tradicional (llamada cadena ASCII), no hay nada que indique texto en negrita. En una cadena Unicode, que funciona de manera un poco diferente, la computadora puede admitir caracteres de idiomas internacionales, como los chinos, pero de nuevo, no hay nada que decir que algunos textos están en negrita y otros no. Tampoco hay fuente explícita, tamaño de texto, etc.

En el caso de imprimir HTML, todavía está produciendo una cadena. Pero el programa de computadora que lee esa cadena (un navegador web) está programado para interpretar texto this is <b>bold</b>como "esto está en negrita " cuando convierte su cadena de letras en píxeles en la pantalla. Si todo el texto fuera WYSIWYG, se mitigaría la necesidad de HTML en sí mismo: simplemente seleccionaría el texto en su editor y lo pondría en negrita en lugar de escribir el HTML.

Otros programas usan sistemas diferentes: muchas respuestas explican un sistema completamente diferente para imprimir texto en negrita en los terminales. Me alegra que hayas descubierto cómo hacer lo que quieres hacer, pero en algún momento, querrás entender cómo funcionan las cadenas y la memoria.


9
Por insatisfactorio que parezca esta respuesta, es probable que sea la que responda más adecuadamente a la pregunta que se le hizo . No es una pregunta de Python en absoluto, sino más bien una pregunta de lo que sea que esté haciendo la representación .
John Y

8
La cuestión es que todos los interesados ​​en la respuesta a esta pregunta entienden el binario y cómo se usa para representar cadenas. Estamos interesados ​​en cómo usar Python para hacer que el texto se vea en negrita, lo cual se respondió anteriormente. Esta respuesta es muy pedante.
Trevor

16

Esto depende si está utilizando Linux / Unix:

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

La palabra textdebe ser audaz.


13

Echa un vistazo a colorama . No necesariamente ayuda con la negrita ... pero puede hacer una salida coloreada tanto en Windows como en Linux, y controlar el brillo:

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

13

Hay un módulo muy útil para formatear texto (negrita, subrayado, colores ...) en Python. Utiliza curseslib pero es muy sencillo de usar.

Un ejemplo:

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

ACTUALIZADO:

Escribí un módulo simple llamado colors.py para hacer esto un poco más 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 En realidad, este es el único sitio que pude encontrar sobre el módulo "terminal". Por favor elabora.
minerales

El enlace anterior solía contener el terminalmódulo, pero han redirigido la página. Aquí está el código almacenado en caché por google.
Diego Navarro

De todos modos, he creado mi propio módulo de Python para resolver esto, échale un vistazo a @minerals ;-)
Diego Navarro

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

\ 033 [1m es el Unicode para negrita en el terminal \ 033 [0m es el Unicode para finalizar el texto editado y volver al formato de texto predeterminado !!!!!

si no usa \ 033 [0m, entonces todo el próximo texto del terminal se pondrá en negrita !!!!!!!!!


agregue alguna explicación
Harsha Biyani

2
¡Lea otra respuesta antes de responder! Esta pregunta tiene muchas respuestas correctas con más explicaciones. No estás agregando nada útil.
Mohammad Dehghan

6

Instalar el termcolormódulo

sudo pip install termcolor

y luego intente esto para texto coloreado

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

o esto para texto en negrita:

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

En Python 3, puede usar alternativamente cprintcomo un reemplazo directo para el incorporado print, con el segundo parámetro opcional para colores o el attrsparámetro para negrita (y otros atributos como underline) además de los printargumentos normales nombrados como fileo end.

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

Revelación completa, esta respuesta se basa en gran medida en la respuesta de Olu Smith y fue pensada como una edición , lo que habría reducido considerablemente el ruido en esta página, pero debido al concepto equivocado de algunos revisores de lo que se supone que es una edición, ahora me veo obligado para hacer de esto una respuesta separada.


3

Algunos terminales permiten imprimir texto en color. Algunos colores se ven como si fueran "negrita". Tratar:

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

La secuencia '\ 033 [1; 37m' hace que algunos terminales comiencen a imprimir en "blanco brillante" que puede parecerse un poco al blanco en negrita. '\ 033 [0; 0m' lo apagará.


3

Suponiendo que realmente quiere decir "imprimir" en un terminal de impresión 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'

Solo envía eso a tu stdout.


2

Audacia simple: código de dos líneas

En python 3 podría usar colorama - simple_colors: (página Simple Colors: https://pypi.org/project/simple-colors/ - vaya al encabezado 'Uso'). Antes de hacer lo que se encuentra a continuación, asegúrese de hacerlo pip install simple_colours.

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

ingrese la descripción de la imagen aquí


¡Gracias! Solo necesitamos instalar primero simple_colors:pip install simple_colors
yzerman
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.