Alla ricerca di informazioni sulla colorazione / evidenziazione del testo di output in python

-5

uno dei primi moduli su cui sto lavorando in un programma python che sto mettendo insieme è un diario.

Mi sto cominciando a usare la funzione di stampa, ma per questo progetto sarebbe bello se potessi differenziare parte dell'output testuale da altri. Ad esempio, ecco un esempio di output di testo dal programma:

November_29_2017 Log_1 11/29/17-Compiti completati Log_2 11/29/17-Ha fatto 30 minuti di Cardio

In quel campione, November_29_2017 è un'etichetta del dizionario stampata. Quello che mi piacerebbe fare è avere quell'output in un colore diverso invece del colore standard di output, in modo tale che io possa differenziarlo come un'etichetta o titolo nel mio diario.

Non conosco l'entità esatta di questo compito, ma se potessi almeno essere fornito con alcuni materiali di ricerca, sarei più che disposto e riconoscente per farlo funzionare. Grazie!

AGGIORNAMENTO: 24/12/2017

Recentemente ho utilizzato i codici di escape ANSI per ottenere il colore sulle mie stampe, ma questo metodo è limitato per me, perché sembra funzionare solo con stringhe letterali e non con oggetti stampabili come elenco e dizionari. Ad esempio, ecco un codice di escape ANSI per colorare una stringa letterale:

print '\ 033 [1; 34mBlue like Blood \ 033 [1; m'

L'output sarebbe la stringa "Blu come il sangue" di colore blu. Ma, cosa succede se ho una lista:

L = ["Blue like Blood", "Banane arancioni e scimmie rosse."]

Ora, impiegherebbe molto tempo a digitare tutto il testo nell'oggetto lista direttamente nella funzione e passarlo, sarebbe meglio se potessi passare l'oggetto lista attraverso la funzione usando il suo indice (o chiave se è un oggetto dict).

Sono ancora un rookie in Python, ma credo di sapere abbastanza che semplicemente provare a schiaffeggiare una lista oa dettare una chiamata tra un codice di escape non funzionerà (l'ho provato).

Ciò di cui ho bisogno è un metodo per print () che colora automaticamente il testo di qualsiasi oggetto passato attraverso la funzione, come ho detto, sono un novellino ma credo che assomiglierebbe a questo:

print.add_color (L [0])

Termini come: mappatura, "creare oggetti callable", classi, ecc., non ho ancora capito ma ... beh, davvero non lo so, ma mi sento come se fossi vicino. Per favore, ancora in cerca di informazioni, e grazie alle persone che hanno fornito input.

    
posta Iam Pyre 23.12.2017 - 20:50
fonte

2 risposte

2

Recently I utilized ANSI escape codes to get the color on my print-outs, but this method is limited for me, because it seems to only work with string literals, and not printable objects like list and dictionaries.

I commenti che hai fornito indicano che hai sbagliato la sintassi. Prova una funzione come questa:

def blueprint(x):
    print('3[34m' + str(x) + '3[0m')

(Le parentesi per print sono necessarie in Python 3 e facoltative in Python 2).

Applicando questo al tuo esempio

 L=["Blue like Blood","Orange bananas and red monkeys."]
 blueprint(L)

dovrebbe fare il trucco, puoi effettivamente passare tutto in quella funzione che può essere convertita in una stringa di str .

Si noti che funzionerà solo in una finestra di terminale che supporta i codici colore ANSI. Sotto Linux o Mac, questo non dovrebbe essere un problema, così come in un ambiente Windows 10, e per versioni precedenti di Windows, il modulo Colorama (grazie a @ tale852150 per il collegamento) dovrebbe risolvere questo in modo indipendente dalla piattaforma. / p>

Per quanto riguarda il tuo problema originale: creare un diario che verrà visualizzato correttamente solo quando stampato in un terminale ANSI è un approccio molto limitato. Se si tenta di salvare il diario su un file e quindi aprirlo in un editor di testo, verranno visualizzate solo le sequenze di escape e nessuno dei colori. Un modo più standard di fare queste cose oggi è l'utilizzo dell'HTML, la scrittura del diario su un file HTML e l'uso di un browser web per visualizzarlo. In questo modo, potresti contrassegnare i titoli utilizzando il tag <head> e formattarli con qualsiasi colore che ti piace utilizzando < a href="https://www.w3schools.com/css/default.asp"> fogli di stile CSS .

    
risposta data 03.01.2018 - 10:40
fonte
0

Provalo Colorama . Questo potrebbe essere quello che stai cercando e funziona su Windows.

Ecco alcuni esempi di codice:

from colorama import Fore, Back, Style
print(Fore.RED + 'some red text')
print(Back.GREEN + 'and with a green background')
print(Style.DIM + 'and in dim text')
print(Style.RESET_ALL)
print('back to normal now')

Ecco un esempio con un elenco:

PerinstallarecoloramasuRHEL:

pipinstallcolorama

AnchequestoesempioquiinSO:

Stampa sul terminale a colori con Python

    
risposta data 01.01.2018 - 12:36
fonte

Leggi altre domande sui tag