J'essaie d'obtenir du texte en gras, ou en couleurs, ou éventuellement en italique, dans qtconsole d'ipython.
J'ai trouvé ce lien: Comment imprimer du texte en gras en Python? , et utilisait les première et deuxième réponses, mais dans qtconsole, seule l'option de soulignement fonctionne.
J'essaie:
print '\033[1m' + 'Hello World!' + '\033[0m'
Et obtenir:
Hello World!
(Pas de gras). Les couleurs ne fonctionnent pas non plus. Mais:
print '\033[4m' + 'Hello World!' + '\033[0m'
Et obtenir:
Hello World!
Avec soulignement.
Ceci est seulement dans la qtconsole. En exécutant ipython juste dans le terminal, cela fonctionne pour faire des caractères gras et colorer de cette façon.
Il y avait d'autres options suggérées dans ce lien et une autre, Imprimer dans un terminal avec des couleurs utilisant Python? , lié à celui-ci, mais ils semblent tous plus complexes et utiliser des paquets plus élaborés que ce qui semble nécessaire pour ce que je veux faire, qui consiste simplement à faire afficher qtconsole comme le fait un terminal ordinaire.
Est-ce que quelqu'un sait ce qui se passe? Est-ce simplement une limitation de la qtconsole?
Dans Jupyter Notebooks, une solution simple pour résoudre ce problème consiste à utiliser le démarquage:
from IPython.display import Markdown, display
def printmd(string):
display(Markdown(string))
Et puis faites quelque chose comme:
printmd("**bold text**")
Bien sûr, cela convient très bien aux caractères gras, italiques, etc., mais le démarquage en soi ne met pas en œuvre la couleur. Cependant, vous pouvez placer du HTML dans votre démarque et obtenir quelque chose comme ceci:
printmd("<span style='color:red'>Red text</span>")
Vous pouvez aussi envelopper ceci dans la fonction printmd
:
def printmd(string, color=None):
colorstr = "<span style='color:{}'>{}</span>".format(color, string)
display(Markdown(colorstr))
Et puis faire des choses cool comme
printmd("**bold and blue**", color="blue")
Pour les couleurs, vous pouvez également utiliser la notation hexadécimale (par exemple, color = "#00FF00"
pour le vert)
Pour clarifier, bien que nous utilisions markdown, il s’agit d’un code cell: vous pouvez faire des choses comme:
for c in ('green', 'blue', 'red', 'yellow'):
printmd("Writing in {}".format(c), color=c)
Bien entendu, l’inconvénient de cette méthode réside dans le fait qu’il est nécessaire de faire partie d’un carnet Jupyter.
Ce sont des échappements ANSI, des séquences spéciales de caractères que les terminaux traitent pour changer de style de police. La console Qt en interprète certains, mais pas tous ceux que les terminaux sérieux font. Cette séquence permet d’imprimer en rouge, par exemple:
print('\x1b[1;31m'+'Hello world'+'\x1b[0m')
Toutefois, si vous essayez d'écrire une application multiplate-forme, sachez que l'invite de commande Windows ne gère pas ces codes. Certains des packages les plus complexes peuvent les traiter pour produire des effets similaires sur Windows.
La console Qt peut aussi afficher du HTML simple, comme ceci:
from IPython.display import HTML
HTML("<i>Italic text</i>")
Mais bien sûr, HTML ne fonctionne pas dans les terminaux classiques.
Je voudrais compléter la réponse incomplète précédente… .. Des choses beaucoup plus complexes et amusantes peuvent être faites sans importer de paquets supplémentaires. par exemple.
print('\x1b[1;03;31;46m'+'Hello'+ '\x1b[0;4;30;42m' + ' world' '\x1b[0m')
c'est à dire.:
Ouvrir avec:
'\x1b[XX;YY;ZZm'
Fermer avec:
'\x1b[0m'
Où XX, YY et ZZ sont des nombres de: https://en.wikipedia.org/wiki/ANSI_escape_code
Il convient de noter que cela dépend beaucoup de ce que vous utilisez comme console pour voir ce qui fonctionne.
Travailler pour moi sont des combinaisons des éléments suivants:
Style du texte
Couleurs du texte
Couleurs de texte vives
Couleurs de fond (c'est-à-dire surlignées)
Notez que 1; 42 etc. fonctionne également de manière similaire
Testé sur Windows 7, Python 3.6, console IPython, dans Spyder 3.2.3 cela fonctionne pour moi
Si vous voulez parler du corps du texte du bloc-notes iPython (Markdowns), vous pouvez mettre 2 caractères de soulignement directement avant et après votre texte pour le rendreGRAS:
__BOLD TEXT__
=> TEXTE GRAS
si vous mettez une barre oblique inverse avant cela, il sera contrebalancé:
\__BOLD TEXT__
=> __BOLD TEXT__
Il y a peu d'autres façons de modifier (j'ai essayé dans iPython Notebook, je ne suis pas sûr des autres) ..
**BOLD TEXT**
Le texte ci-dessus apparaîtra en gras: TEXTE GRAS
*__BOLD TEXT__*
produira du texte en gras et en italique: TEXTE EN GRAS