Comment imprimer du texte en gras en Python?

162

Comment imprimer du texte en gras en Python?

Par exemple:

print "hello"

Que dois-je faire pour que le texte «bonjour» s'affiche en gras?

Jia-Luo
la source
2
duplication de texte couleur dans les applications de terminal sous unix . Beaucoup de liens dans les réponses. Cette réponse est en C, mais facilement traduite en Python.
Joe
6
Quel terminal utilisez-vous? Êtes-vous sous Unix ou Windows?
Sjoerd
j'utilise safari. Je viens de découvrir que je peux utiliser des balises HTML en python.
Jia-Luo

Réponses:

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
la source
15
J'aime la façon dont vous n'avez pas simplement fait gras, mais créé une classe entière pour qu'ils puissent s'y référer et pour aider tous les utilisateurs à visualiser. Je vous remercie.
GreenHawk1220
3
Je vais utiliser ça comme dict, pas comme classe. Merci!
dvlden
6
Il imprime ce qui suit:[1mHello World ![0m
Travailler sur ma configuration: ubuntu 19.10, python 3.7
Elouan Keryell-Even
Puis-je aussi combiner gras et couleur? @Boubakr
alper
62

Utilisez ceci:

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

Et pour revenir à la normale:

print '\033[0m'

Cette page est une bonne référence pour l'impression en couleurs et en poids de police. Accédez à la section intitulée "Définir le mode graphique:"

Et notez que cela ne fonctionnera pas sur tous les systèmes d'exploitation, mais vous n'avez besoin d'aucun module.

Addison
la source
31

Vous pouvez utiliser termcolor pour cela:

 sudo pip install termcolor

Pour imprimer un gras coloré:

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

Pour plus d'informations, consultez termcolor sur PyPi .

simple-colors est un autre package avec une syntaxe similaire:

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

L'équivalent en colorama peut être Style.BRIGHT.

Olu Smith
la source
8
Si je devais deviner que quelqu'un a voté contre cela parce qu'il ne répondait pas à la question réelle comment imprimer quelque chose en gras.
Christian
Votre droite, il y a eu une mise à jour. Désolé pour ces gars.
Olu Smith
22

Dans la programmation informatique directe, il n'y a pas de "impression de texte en gras". Reculons un peu et comprenons que votre texte est une chaîne d'octets et que les octets ne sont que des paquets de bits. À l'ordinateur, voici votre texte "bonjour", en binaire .

0110100001100101011011000110110001101111

Chaque un ou zéro est un peu. Tous les huit bits sont un octet. Chaque octet est, dans une chaîne comme celle de Python 2.x, un élément lettre / chiffre / ponctuation (appelé un caractère). Donc par exemple:

01101000 01100101 01101100 01101100 01101111
h        e        l        l        o

L'ordinateur traduit ces bits en lettres, mais dans une chaîne traditionnelle (appelée chaîne ASCII), rien n'indique du texte en gras. Dans une chaîne Unicode, qui fonctionne un peu différemment, l'ordinateur peut prendre en charge les caractères de langue internationale, comme les caractères chinois, mais encore une fois, rien ne permet de dire que certains textes sont en gras et d'autres non. Il n'y a pas non plus de police explicite, de taille de texte, etc.

Dans le cas de l'impression HTML, vous sortez toujours une chaîne. Mais le programme informatique lisant cette chaîne (un navigateur Web) est programmé pour interpréter le texte comme this is <b>bold</b>«ceci est en gras » lorsqu'il convertit votre chaîne de lettres en pixels à l'écran. Si tout le texte était WYSIWYG, le besoin de HTML lui-même serait atténué - il vous suffirait de sélectionner le texte dans votre éditeur et de le mettre en gras au lieu de taper le HTML.

D'autres programmes utilisent des systèmes différents - de nombreuses réponses expliquent un système complètement différent d'impression de texte en gras sur les terminaux. Je suis heureux que vous ayez découvert comment faire ce que vous voulez faire, mais à un moment donné, vous voudrez comprendre comment fonctionnent les chaînes et la mémoire.

Ken Kinder
la source
9
Aussi insatisfaisante que puisse paraître cette réponse, c'est probablement celle qui répond le mieux à la question posée . Ce n'est pas du tout une question Python, mais plutôt une question sur ce qui fait le rendu .
John Y
8
Le fait est que tout le monde intéressé par la réponse à cette question comprend le binaire et comment il est utilisé pour représenter des chaînes. Nous sommes intéressés par la façon d'utiliser python pour rendre le texte en gras, réponse ci-dessus. Cette réponse est bien trop pédante.
Trevor
16

Cela dépend si vous utilisez linux / unix:

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

Le mot textdoit être en gras.

aayoubi
la source
13

Découvrez colorama . Cela n'aide pas nécessairement avec le gras ... mais vous pouvez faire une sortie colorisée sur Windows et Linux, et contrôler la luminosité:

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

Il existe un module très utile pour la mise en forme du texte (gras, souligné, couleurs ..) en Python. Il utilise curseslib mais c'est très simple à utiliser.

Un exemple:

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

ACTUALISÉ:

J'ai écrit un module simple nommé colors.py pour rendre cela un peu plus pythonique:

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
la source
2
ImportError: No module named terminal ImportError: No module named render En fait, c'est le seul site que j'ai pu trouver sur le module "terminal". Veuillez préciser.
minéraux
Le lien ci-dessus contenait le terminalmodule, mais ils ont redirigé la page. Voici le code mis en cache par google.
Diego Navarro
Quoi qu'il en soit, j'ai créé mon propre module python pour résoudre ce problème, vérifiez-le @minerals ;-)
Diego Navarro
8
print '\033[1m  Your Name  \033[0m'

\ 033 [1m est l'unicode pour le gras dans le terminal \ 033 [0m est l'unicode pour terminer le texte édité et retourner le format de texte par défaut !!!!!

si vous n'utilisez pas \ 033 [0m, tout le texte à venir du terminal deviendra gras !!!!!!!!!

Bhavik Sakhiya
la source
s'il vous plaît ajouter quelques explications
Harsha Biyani
2
Veuillez lire les autres réponses avant de répondre! Cette question a beaucoup de bonnes réponses avec plus d'explications. Vous n'ajoutez rien d'utile.
Mohammad Dehghan
6

Installez le termcolormodule

sudo pip install termcolor

puis essayez ceci pour le texte coloré

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

ou ceci pour le texte en gras:

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

Dans Python 3, vous pouvez également utiliser cprinten remplacement de l'élément intégré print, avec le deuxième paramètre facultatif pour les couleurs ou le attrsparamètre pour le gras (et d'autres attributs tels que underline) en plus des printarguments nommés normaux tels que fileou end.

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

Divulgation complète, cette réponse est fortement basée sur la réponse d'Olu Smith et était destinée à être une modification , ce qui aurait considérablement réduit le bruit sur cette page, mais en raison du concept erroné de certains critiques de ce qu'une modification est censée être, je suis maintenant obligé pour en faire une réponse distincte.

Christian
la source
3

Certains terminaux permettent d'imprimer du texte en couleur. Certaines couleurs semblent "audacieuses". Essayer:

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

La séquence '\ 033 [1; 37m' permet à certains terminaux de commencer à imprimer en "blanc brillant" qui peut ressembler un peu à du blanc en gras. '\ 033 [0; 0m' le désactivera.

Maciek
la source
3

En supposant que vous vouliez vraiment dire "imprimer" sur un vrai terminal d'impression:

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

Envoyez-le simplement à votre stdout.

John Machin
la source
2

Audace simple - Code sur deux lignes

En python 3, vous pouvez utiliser colorama - simple_colors: (page Couleurs simples: https://pypi.org/project/simple-colors/ - allez dans la rubrique 'Utilisation'.) Avant de faire ce qui est ci-dessous, assurez-vous de vous pip install simple_colours.

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

entrez la description de l'image ici

PythonMaster202
la source
Merci! Nous avons juste besoin d'installer d'abord simple_colors:pip install simple_colors
yzerman