it-swarm.com.de

drucken von fettem, farbigem usw. Text in ipython qtconsole

Ich versuche Text in Fettdruck, in Farbe oder möglicherweise kursiv in ipythons qtconsole anzuzeigen.

Ich habe diesen Link gefunden: Wie drucke ich fetten Text in Python? und verwendete die erste und zweite Antwort, aber in qtconsole funktioniert nur die Unterstreichungsoption.

Ich versuche:

print '\033[1m' + 'Hello World!' + '\033[0m'

Und bekomme:

Hello World!

(Kein Fettdruck). Die Farben funktionieren auch nicht. Aber:

print '\033[4m' + 'Hello World!' + '\033[0m'

Und bekomme:

Hello World!

Mit Unterstreichung.

Dies ist nur in der qtconsole. Wenn Sie ipython nur im Terminal ausführen, können Sie auf diese Weise Fettdruck und Farbe erzeugen.

Es wurden andere Optionen in diesem Link vorgeschlagen und eine andere, in Terminal mit Farben mit Python? , von da an verlinkt, aber sie scheinen alle komplexer zu sein und kompliziertere Pakete zu verwenden, als für das, was ich tun möchte, notwendig scheint, nämlich, dass qtconsole so angezeigt wird, wie das gewöhnliche Terminal es tut.

Weiß jemand, was los ist? Ist das nur eine Einschränkung der qtconsole?

10
David Schueler

In Jupyter Notebooks bietet Markdown eine saubere Möglichkeit, dieses Problem zu lösen:

from IPython.display import Markdown, display
def printmd(string):
    display(Markdown(string))

Und dann etwas wie:

printmd("**bold text**")

Dies ist natürlich gut für Fettdruck, Kursivschrift usw., aber Markdown selbst implementiert keine Farbe. Sie können jedoch HTML in Ihren Markdown einfügen und so etwas wie folgt erhalten:

printmd("<span style='color:red'>Red text</span>")

Sie könnten dies auch in die Funktion printmd einschließen:

def printmd(string, color=None):
    colorstr = "<span style='color:{}'>{}</span>".format(color, string)
    display(Markdown(colorstr))

Und dann coole Sachen machen 

printmd("**bold and blue**", color="blue")

Für die Farben können Sie auch die Hexadezimal-Notation verwenden (zB color = "#00FF00" für Grün).

Um zu klären, obwohl wir markdown verwenden, ist dies eine code cell: Sie können folgende Dinge tun:

for c in ('green', 'blue', 'red', 'yellow'):
    printmd("Writing in {}".format(c), color=c)

Ein Nachteil dieser Methode ist natürlich das Vertrauen in ein Jupyter-Notebook.

24
Charles

Dies sind ANSI-Escape-Zeichen, spezielle Zeichenfolgen, die Terminals verarbeiten, um Schriftstile umzuschalten. Die Qt-Konsole interpretiert einige davon, aber nicht alle, die seriöse Terminals ausführen. Diese Sequenz funktioniert zum Beispiel in roter Schrift:

print('\x1b[1;31m'+'Hello world'+'\x1b[0m')

Wenn Sie jedoch versuchen, eine plattformübergreifende Anwendung zu schreiben, beachten Sie, dass die Windows-Eingabeaufforderung diese Codes nicht verarbeitet. Einige der komplexeren Pakete können diese verarbeiten, um ähnliche Effekte unter Windows zu erzeugen.

Die Qt-Konsole kann auch einfaches HTML anzeigen:

from IPython.display import HTML
HTML("<i>Italic text</i>")

Natürlich funktioniert HTML in normalen Terminals nicht.

11
Thomas K

Ich möchte die vorherige unvollständige Antwort abschließen. Viel komplexere und lustigere Dinge können ohne Importieren zusätzlicher Pakete erledigt werden. z.B.

print('\x1b[1;03;31;46m'+'Hello'+ '\x1b[0;4;30;42m' + ' world' '\x1b[0m')

d.h .:

Öffnen mit:

'\x1b[XX;YY;ZZm'

Schließen mit:

'\x1b[0m'

Wo XX, YY und ZZ Zahlen sind von: https://en.wikipedia.org/wiki/ANSI_escape_code

Es sollte beachtet werden, dass es sehr stark davon abhängt, was Sie als Konsole verwenden, um zu sehen, was funktioniert.

Für mich arbeiten Kombinationen aus Folgendem:

Textgestaltung

  • 1 Erhöhte Intensität (in meinem Fall wird die Hervorhebung und der Text gleichzeitig bearbeitet)
  • 3 Itallic 
  • 4 Unterstreichen

Textfarben

  • 30 schwarzer Text 
  • 31 Dunkelroter Text 
  • 32 Dunkelgrüner Text 
  • 33 Roter Text 
  • 34 Dunkelblauer Text 
  • 35 Lila Text 
  • 36 Blauer Text 
  • 37 Grauer Text

Helle Textfarben

  • 1; 30 grauer Text (helles Schwarz) 
  • 1; 31 oranger Text (leuchtend rot) 
  • 1; 32 hellgrüner Text 
  • 1; 33 Hellgelber Text 
  • 1; 34 Hellblauer Text 
  • 1; 35 Hellvioletter Text 
  • 1; 36 Heller Cyan-Text 
  • 1; 37 weißer Text (hell Grau)

Hintergrundfarben (d. H. Hervorhebungen)

  • 40 Schwarzes Highlight
  • 41 Dunkelrotes Highlight
  • 42 Dunkelgrünes Highlight
  • 43 Rote Markierung
  • 44 Dunkelblaues Highlight
  • 45 Lila Highlight
  • 46 Blaues Highlight
  • 47 Graues Highlight

Beachten Sie, dass 1; 42 usw. auch ähnlich funktioniert

Getestet unter Windows 7, Python 3.6, IPython Console, in Spyder 3.2.3 funktioniert das für mich

4
Jonasz

Wenn Sie den Nachrichtentext des iPython-Notizbuchs (Markdowns) meinen, können Sie zwei Unterstriche direkt vor und nach Ihrem Text einfügen, um ihnFETT:

__BOLD TEXT__ => FETT TEXT

wenn Sie einen Backslash davor setzen, wird dieser entgegengewirkt:

\__BOLD TEXT__ => __BOLD TEXT__

1
Ali

Es gibt nur wenige Möglichkeiten, wie Sie sich umstellen können (ich habe es in iPython Notebook probiert, andere sind mir nicht sicher).

**BOLD TEXT**

Oben wird ein fett gedruckter Text erzeugt: BOLD TEXT

*__BOLD TEXT__*

erzeugt fetten und kursiven Text: BOLD TEXT  

0