Colorare il testo nel terminale con le sequenze ANSI (\x1b)
Il colore del testo e dello sfondo nei messaggi stampati in Python si può modificare usando sequenze di escape ANSI, senza usare librerie esterne.
Cos’è \x1b e come funziona
\x1b è il carattere ESC (Escape) in formato esadecimale. Viene usato per avviare una sequenza di controllo ANSI:
\x1b[m
Esempio:
print("\x1b[31mTesto rosso\x1b[0m")
31 indica il colore rosso. 0m serve a resettare lo stile dopo la stampa.
Tabella Colori ANSI
Colori normali – Testo (foreground)
| Colore | Codice |
|---|---|
| Nero | 30 |
| Rosso | 31 |
| Verde | 32 |
| Giallo | 33 |
| Blu | 34 |
| Magenta | 35 |
| Ciano | 36 |
| Bianco | 37 |
Colori normali – Sfondo (background)
| Colore | Codice |
|---|---|
| Nero | 40 |
| Rosso | 41 |
| Verde | 42 |
| Giallo | 43 |
| Blu | 44 |
| Magenta | 45 |
| Ciano | 46 |
| Bianco | 47 |
Colori brillanti (High Intensity)
Testo brillante (foreground)
| Colore | Codice |
|---|---|
| Nero brillante | 90 |
| Rosso brillante | 91 |
| Verde brillante | 92 |
| Giallo brillante | 93 |
| Blu brillante | 94 |
| Magenta brillante | 95 |
| Ciano brillante | 96 |
| Bianco brillante | 97 |
Sfondo brillante (background)
| Colore | Codice |
|---|---|
| Nero brillante | 100 |
| Rosso brillante | 101 |
| Verde brillante | 102 |
| Giallo brillante | 103 |
| Blu brillante | 104 |
| Magenta brillante | 105 |
| Ciano brillante | 106 |
| Bianco brillante | 107 |
Combinazioni avanzate
- Grassetto: 1
- Sottolineato: 4
- Reset totale: 0
Esempi:
print("\x1b[1;91mTesto rosso brillante in grassetto\x1b[0m")
print("\x1b[4;34;47mTesto blu sottolineato con sfondo bianco\x1b[0m")
print("\x1b[92;104mVerde brillante con sfondo blu brillante\x1b[0m")
Attività proposta
Crea un menu con opzioni colorate:
print("\x1b[92m1. Avvia\x1b[0m")
print("\x1b[93m2. Impostazioni\x1b[0m")
print("\x1b[91m3. Esci\x1b[0m")
Salvare i codici ANSI in variabili (buona pratica)
Per rendere il codice più leggibile e facile da mantenere, possiamo assegnare le sequenze ANSI a delle variabili:
# Colori testo
ROSSO = "\x1b[31m"
VERDE = "\x1b[32m"
GIALLO = "\x1b[33m"
RESET = "\x1b[0m"
# Colori sfondo
SFONDO_BLU = "\x1b[44m"
SFONDO_GIALLO = "\x1b[43m"
# Stili
GRASSETTO = "\x1b[1m"
SOTTOLINEATO = "\x1b[4m"
# Esempi di utilizzo
print(GRASSETTO + ROSSO + "Errore: qualcosa è andato storto!" + RESET)
print(VERDE + SFONDO_GIALLO + "Successo!" + RESET)
print(SOTTOLINEATO + "Testo sottolineato" + RESET)
In questo modo, possiamo comporre i messaggi usando le variabili, evitando di ripetere i codici ogni volta e migliorando la chiarezza del codice.