Est-il possible d'une manière ou d'une autre de faire apparaître une certaine sortie dans une couleur différente dans le carnet IPython? Par exemple, quelque chose dans ce genre:
print("Bonjour monde en rouge", color='red')
Est-il possible d'une manière ou d'une autre de faire apparaître une certaine sortie dans une couleur différente dans le carnet IPython? Par exemple, quelque chose dans ce genre:
print("Bonjour monde en rouge", color='red')
Une bonne façon d'utiliser pandas
est:
import pandas as pd
def apply_formatting(col, hex_colors):
for hex_color in hex_colors:
if col.name == hex_color:
return [f'background-color: {hex_color}' for c in col.values]
def display_hex_colors(hex_colors: List[str]):
df = pd.DataFrame(hex_colors).T
df.columns = hex_colors
df.iloc[0,0:len(hex_colors)] = ""
display(df.style.apply(lambda x: apply_formatting(x, hex_colors)))
hex_list = ['#FFFFFF', '#F0F0F0', '#FCF0D8', '#fdd8a7', '#fdc38d', '#fca16c',
'#f67b51', '#e7533a', '#cf2518', '#ad0000', '#7f0000', '#440402']
display_hex_colors(hex_list)
En utilisant la réponse de @Evert, voici une méthode qui envelopperait une liste de jetons en rouge et renverrait une chaîne en surbrillance
def color_in_tokens(tokens, color_token_contains="_"):
"""
Met en surbrillance les jetons contenant 'color_token_contains'
:param tokens: liste de chaînes
:param color_token_contains: str (la chaîne pour marquer un jeton en rouge)
:return: str
"""
return " ".join(["\x1b[31m%s\x1b[0m" % i if color_token_contains in i else i for i in tokens])
Extrait de : Norme pour les couleurs ANSI dans les terminaux
Ce fragment de code peut vous montrer toutes les couleurs sur une seule ligne :
RÉINITIALISER = "\x1b[0m"
print("Pour réinitialiser les attributs : \\x1b[0m\n")
for i in range(0, 8):
print("\x1b[1;3{0}m\\x1b[1;3{0}m{1} \x1b[0;3{0}m\\x1b[0;3{0}m{1} "
"\x1b[1;4{0};3{0}m\\x1b[1;3{0};4{0}m{1}".format(i, RESET))
Comme suggéré, le comportement exact que vous demandez peut être obtenu en enveloppant la fonction print() de la manière suivante :
def print_wrapper(func):
ansi_reset = '\033[0m'
ansi_black = '\033[90m'
ansi_red = '\033[91m'
ansi_green = '\033[92m'
ansi_yellow = '\033[93m'
ansi_blue = '\033[94m'
ansi_pink = '\033[95m'
ansi_teal = '\033[96m'
ansi_gray = '\033[97m'
ansi_warning = '\033[31;1;4m'
ansi_error = '\033[31;100m'
def wrapped_func(*args,**kwargs):
new_args = args + tuple()
new_kwargs = kwargs.copy()
for kwarg, kwvalue in kwargs.items(): # Loop through the keyword arguments
if kwarg == "color":
if kwvalue == "black":
color = ansi_black
elif kwvalue == "red":
color = ansi_red
elif kwvalue == "green":
color = ansi_green
elif kwvalue == "yellow":
color = ansi_yellow
elif kwvalue == "blue":
color = ansi_blue
elif kwvalue == "pink":
color = ansi_pink
elif kwvalue == "teal":
color = ansi_teal
elif kwvalue == "gray":
color = ansi_gray
elif kwvalue == "warning":
color = ansi_warning
elif kwvalue == "error":
color = ansi_error
new_kwargs = kwargs.copy() # Make a copy of the keyword arguments dict
del new_kwargs["color"] # Remove color from the keyword arguments dict
try: # Is the variable color defined?
color
except NameError:
pass
# no color was specified
else:
new_args = ()
for arg in args:
new_args += (f"{color}{arg}{ansi_reset}",) # Apply the ANSI escape codes to each non-keyword argument
return func(*new_args,**new_kwargs)
return wrapped_func
print = print_wrapper(print) # Apply the wrapper to the print() function
print("This is red.", "And so is this.", color='red')
Cette solution utilise les séquences d'échappement ANSI mentionnées dans plusieurs autres réponses ici, mais analyse et modifie les arguments de print() avant de les afficher.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.