Come posso stampare un testo in grassetto in Python?
Per esempio:
print "hello"
Cosa devo fare in modo che il testo "ciao" sia visualizzato in grassetto?
Come posso stampare un testo in grassetto in Python?
Per esempio:
print "hello"
Cosa devo fare in modo che il testo "ciao" sia visualizzato in grassetto?
Risposte:
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)
Usa questo:
print '\033[1m' + 'Hello'
E per tornare alla normalità:
print '\033[0m'
Questa pagina è un buon riferimento per la stampa a colori e grammature dei caratteri. Vai alla sezione che dice "Imposta la modalità grafica:"
E nota che questo non funzionerà su tutti i sistemi operativi ma non hai bisogno di alcun modulo.
È possibile utilizzare termcolor per questo:
sudo pip install termcolor
Per stampare un grassetto colorato:
from termcolor import colored
print(colored('Hello', 'green', attrs=['bold']))
Per ulteriori informazioni, vedere termcolor su PyPi .
simple-colours è un altro pacchetto con sintassi simile:
from simple_colors import *
print(green('Hello', ['bold'])
L'equivalente in colorama può essere Style.BRIGHT.
Nella programmazione diretta del computer, non esiste una cosa come "stampare un testo in grassetto". Facciamo un po 'di backup e comprendiamo che il testo è una stringa di byte e che i byte sono solo fasci di bit. Al computer, ecco il tuo testo "ciao", in binario .
0110100001100101011011000110110001101111
Ognuno o zero è un po '. Ogni otto bit è un byte. Ogni byte è, in una stringa come quella in Python 2.x, un elemento lettera / numero / punteggiatura (chiamato carattere). Quindi per esempio:
01101000 01100101 01101100 01101100 01101111
h e l l o
Il computer traduce quei bit in lettere, ma in una stringa tradizionale (chiamata stringa ASCII), non c'è nulla che indichi un testo in grassetto. In una stringa Unicode, che funziona in modo leggermente diverso, il computer può supportare caratteri in lingua internazionale, come quelli cinesi, ma ancora una volta, non c'è nulla da dire che un testo sia in grassetto e un testo no. Non ci sono anche caratteri espliciti, dimensioni del testo, ecc.
Nel caso di stampa HTML, stai ancora emettendo una stringa. Ma il programma per computer che legge quella stringa (un browser web) è programmato per interpretare il testo come this is <b>bold</b>"questo è in grassetto " quando converte la tua stringa di lettere in pixel sullo schermo. Se tutto il testo fosse WYSIWYG, la necessità dell'HTML stesso sarebbe mitigata: selezioneresti semplicemente il testo nel tuo editor e lo in grassetto invece di digitare l'HTML.
Altri programmi utilizzano sistemi diversi: molte risposte hanno spiegato un sistema completamente diverso per stampare testi in grassetto sui terminali. Sono contento che tu abbia scoperto come fare quello che vuoi fare, ma a un certo punto vorrai capire come funzionano le stringhe e la memoria.
C'è un modulo molto utile per la formattazione del testo (grassetto, sottolineato, colori ...) in Python. Usa la curseslib ma è molto semplice da usare.
Un esempio:
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')
Ho scritto un semplice modulo chiamato colors.py per rendere questo un po 'più pitonico:
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")
ImportError: No module named terminal ImportError: No module named render In realtà questo è l'unico sito che ho trovato sul modulo "terminale". Per favore, elabora.
terminalmodulo, ma hanno reindirizzato la pagina. Ecco il codice memorizzato nella cache da google.
print '\033[1m Your Name \033[0m'
\ 033 [1m è l'unicode per il grassetto nel terminale \ 033 [0m è l'unicode per terminare il testo modificato e indietro il testo predefinito di default !!!!!
se non usi \ 033 [0m di tutto il testo imminente del terminale diventerà grassetto !!!!!!!!!
Installa il termcolormodulo
sudo pip install termcolor
e quindi prova questo per il testo colorato
from termcolor import colored
print colored('Hello', 'green')
o questo per il testo in grassetto:
from termcolor import colored
print colored('Hello', attrs=['bold'])
In Python 3 puoi usare alternativamente cprintcome sostituzione drop-in per il built-inprint , con il secondo parametro opzionale per i colori o il attrsparametro per grassetto (e altri attributi come underline) oltre ai normali printargomenti con nome come fileo end.
import sys
from termcolor import cprint
cprint('Hello', 'green', attrs=['bold'], file=sys.stderr)
Divulgazione completa, questa risposta è fortemente basata sulla risposta di Olu Smith ed era intesa come una modifica , che avrebbe ridotto notevolmente il rumore in questa pagina ma a causa di alcuni concetto errato di ciò che una modifica dovrebbe essere, ora sono costretto per rendere questa una risposta separata.
Alcuni terminali consentono di stampare testo colorato. Alcuni colori sembrano "audaci". Provare:
print ('\033[1;37mciao!')
La sequenza '\ 033 [1; 37m' fa in modo che alcuni terminali inizino a stampare in "bianco brillante" che potrebbe apparire un po 'in grassetto bianco. '\ 033 [0; 0m' lo disattiverà.
Supponendo che intendi davvero "stampa" su un vero terminale di stampa:
>>> 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'
Invialo al tuo stdout.
In python 3 puoi usare colorama - simple_colors: (pagina Colori semplici: https://pypi.org/project/simple-colors/ - vai alla voce 'Uso'.) Prima di fare ciò che è sotto, assicurati di pip install simple_colours.
from simple_colors import *
print(green('hello', 'bold'))
pip install simple_colors