¿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?

Jia-Luo
fuente
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)
Boubakr
fuente
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.

Addison
fuente
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.

Olu Smith
fuente
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.

Ken Kinder
fuente
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.

aayoubi
fuente
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'
John Szakmeister
fuente
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")
Diego Navarro
fuente
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 !!!!!!!!!

Bhavik Sakhiya
fuente
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.

cristiano
fuente
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á.

Maciek
fuente
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.

John Machin
fuente
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í

PythonMaster202
fuente
¡Gracias! Solo necesitamos instalar primero simple_colors:pip install simple_colors
yzerman