Est-il possible que certaines sorties apparaissent dans une couleur différente dans le Notebook IPython?
print("Hello Red World", color='red')
Le bloc-notes a bien sûr sa propre syntaxe en surbrillance. Je ferais donc bien attention lorsque j'utilise de la couleur ailleurs, afin d'éviter de compliquer la lecture pour vous-même ou pour quelqu'un d'autre (par exemple, la sortie doit simplement être en noir, mais vous obtenez des parties en rouge en cas d'exception).
Mais (à ma grande surprise), il semble que vous puissiez utiliser les codes d'échappement ANSI (même dans le navigateur). Au moins, je pourrais:
Sur l'invite Python par défaut:
>>> print("\x1b[31m\"red\"\x1b[0m")
"red"
Dans le cahier:
In [28]: print("\x1b[31m\"red\"\x1b[0m")
"red"
(Évidemment, j'ai triché ici avec la coloration syntaxique de SO pour que "rouge" soit imprimé en rouge dans les deux exemples. Je ne pense pas que SO autorise un utilisateur à définir une couleur pour le texte .)
Je ne saurais pas vraiment une autre façon d'obtenir des couleurs.
Pour plus d'informations sur les codes d'échappement ANSI, je suggérerais le article Wikipedia . Et si vous trouvez que ce qui précède est prolixe, vous pouvez bien sûr écrire une fonction wrapper autour de cela.
vous pouvez utiliser cette bibliothèque termcolor et vous pouvez obtenir toutes les autres bibliothèques officielles de python en pypi
Voir la documentation dans pypi.python.org ou suivez ces étapes
- pip installer termcolor
- puis allez à ipython
Code
from termcolor import colored
print colored('hello', 'red'), colored('world', 'green')
print colored("hello red world", 'red')
Sortie:
hello world
hello red world
Le premier argument est ce que vous voulez imprimer sur la console et le second argument utilise cette couleur
Pas avec une impression Python brute. Vous devrez définir un _repr_html_
sur un objet et le renvoyer ou appeler IPython.lib.display(object_with_repr_html)
.
Je suppose que vous pourriez écraser l'impression intégrée pour le faire automatiquement ...
Vous pouvez vous inspirer de http://nbviewer.ipython.org/5098827 , code dans Gist sur github , discussion ML ici .
Voici un petit hack:
from IPython.display import HTML as html_print
def cstr(s, color='black'):
return "<text style=color:{}>{}</text>".format(color, s)
left, Word, right = 'foo' , 'abc' , 'bar'
html_print(cstr(' '.join([left, cstr(Word, color='red'), right]), color='black') )
[en dehors]:
Si vous voulez juste une seule couleur: html_print(cstr('abc', 'red'))
Semblable à ce que @alvas a mentionné mais plus simple
from IPython.display import Markdown
display (Markdown('this is in <span style="color: #ff0000">red</span> color.'))
Il existe la bibliothèque colorée (pip install colored
), que vous pouvez utiliser pour modifier une chaîne afin d’obtenir des codes de couleur afin de modifier son impression. Exemple d'utilisation:
import colored
print colored.bg("white") + colored.fg("red") + "Hello world!"
En utilisant @Evert answer, voici une méthode qui encapsulerait une liste de jetons en rouge et renverrait une chaîne en surbrillance
def color_in_tokens(tokens, color_token_contains="_"):
"""
Highlights the tokens which contain 'color_token_contains'
:param tokens: list of strings
:param color_token_contains: str (the string for marking a token red)
:return: str
"""
return " ".join(["\x1b[31m%s\x1b[0m" % i if color_token_contains in i else i for i in tokens])