Como colorir strings em python?
vamos la
colorir é um conceito complexo
a maneira mais facil de fazer I/O ( entrada e saida ) é atraves da abstração de stdin/stdout ( entrada - in, saida - out, padrão ), que conhecemos vulgarmente como “terminal” ( o “dos” para quem vem do mundo MS das antigas, o “cmd” do MS recente e o tty/xterm o mundo *nix ).
é importante entender isso. em muitos casos escrever uma string é como escrever… em um arquivo! por acaso esse arquivo imprime coisas na tela. mas vc não esta restrito a saida padrão: vc pode usar uma API Grafica e imprimir em um componente X ou GTK e isso vai aparecer na tela de uma forma diferente. Nesse caso colorir o texto, quando possivel, depende das APIs desses componentes graficos.
outro exemplo interessante é o HTML: um sistema web basicamente “cospe” ou “imprime” html que tem uma forma de colorir o texto ( via css/ style nos dias de hoje).
agora vc provavelmente quer imprimir uma string colorida no seu terminal. acontece q isso não é exatamente padrão pois os primeiros terminais ( pense em cartões perfurados, fitas perfuradas ou teletipo ) não tinham cores. É claro que existem algumas formas de emular isso ( em um teletipo, que é tipo uma maquina de escrever ligada ao computador, vc pode voltar o carro e escrever a string de novo, deixando-a com cara de negrito ).
portanto colorir depende do terminal.
existem varios tipos de terminais e quando vc usa um programa para interagir com um computador como o CMD do windows ou XTERM do linux, ele esta emulando um dado tipo de terminal. alguns terminais suportam cores então se o tipo emulado é o correto vc simplesmente tem q mandar os codigos dizendo “agora o texto é vermelho”.
XTERM suporta codigos de escape ANSI - https://en.wikipedia.org/wiki/ANSI_escape_code
isso permite fazer coisas como: posicionar o cursor num dado ponto da tela, cores, efeitos e muito mais. existe uma sequencia que começa com o ESCAPE 0x1B ( 27 em decimal ) que não é nenhuma letra da tabela ASCII. quando o terminal encontra esse byte ele trata de interpretar a sequencia a seguir que pode ser, por exemplo, uma cor de texto ou fundo.
pra facilitar nossa vida, em python vc tem esse modulo: termcolor
https://pypi.python.org/pypi/termcolor
porem entenda: a sua string é por acaso um conjunto de bytes. pode ser puro 7-bit ascii ou pode ser UTF-8 ( 16, 32), latin-1 ou EBCDIC. não existe o conceito de cor nesses casos. vc precisa de suporte do lugar onde vc vai imprimir que mostre uma dada caracteristica como a cor.