Wie drucke ich fetten Text in Python?

162

Wie drucke ich fetten Text in Python?

Beispielsweise:

print "hello"

Was soll ich tun, damit der Text „Hallo“ fett angezeigt wird?

Jia-Luo
quelle
2
Duplikat von Farbtext in Terminalanwendungen unter Unix . Viele Links in den Antworten. Diese Antwort ist in C, aber leicht in Python zu übersetzen.
Joe
6
Welches Terminal verwenden Sie? Sind Sie unter Unix oder Windows?
Sjoerd
Ich benutze Safari. Ich habe gerade herausgefunden, dass ich HTML-Tags in Python verwenden kann.
Jia-Luo

Antworten:

376
class color:
   PURPLE = '\033[95m'
   CYAN = '\033[96m'
   DARKCYAN = '\033[36m'
   BLUE = '\033[94m'
   GREEN = '\033[92m'
   YELLOW = '\033[93m'
   RED = '\033[91m'
   BOLD = '\033[1m'
   UNDERLINE = '\033[4m'
   END = '\033[0m'

print(color.BOLD + 'Hello World !' + color.END)
Boubakr
quelle
15
Ich mag die Art und Weise, wie Sie nicht nur Fettdruck gemacht haben, sondern eine ganze Klasse erstellt haben, auf die sie verweisen und die allen Benutzern beim Anzeigen helfen kann. Danke dir.
GreenHawk1220
3
Ich werde das als Diktat verwenden, nicht als Klasse. Vielen Dank!
dvlden
6
Es wird Folgendes gedruckt:[1mHello World ![0m
Ich arbeite
Kann ich auch Fett mit Farbe kombinieren? @Boubakr
Alper
61

Benutze das:

print '\033[1m' + 'Hello'

Und um wieder normal zu werden:

print '\033[0m'

Diese Seite ist eine gute Referenz zum Drucken in Farben und Schriftstärken. Gehen Sie zu dem Abschnitt "Grafikmodus einstellen:".

Beachten Sie, dass dies nicht auf allen Betriebssystemen funktioniert, Sie jedoch keine Module benötigen.

Addison
quelle
31

Hierfür können Sie termcolor verwenden:

 sudo pip install termcolor

So drucken Sie eine farbige Fettschrift:

 from termcolor import colored
 print(colored('Hello', 'green', attrs=['bold']))

Weitere Informationen finden Sie unter Termcolor auf PyPi .

simple-colours ist ein weiteres Paket mit ähnlicher Syntax:

 from simple_colors import *
 print(green('Hello', ['bold'])

Das Äquivalent in Colorado kann sein Style.BRIGHT.

Olu Smith
quelle
8
Wenn ich raten müsste, dass jemand dies abgelehnt hat, weil es die eigentliche Frage, wie man etwas in Fettdruck druckt, nicht beantwortet.
Christian
Du hast Recht, es gab ein Update. Tut mir leid wegen den Jungs.
Olu Smith
22

In der direkten Computerprogrammierung gibt es kein "Drucken von fettem Text". Lassen Sie uns ein wenig sichern und verstehen, dass Ihr Text eine Folge von Bytes ist und Bytes nur Bündel von Bits sind. Für den Computer ist hier Ihr "Hallo" -Text in Binärform .

0110100001100101011011000110110001101111

Jede Eins oder Null ist ein bisschen. Alle acht Bits ist ein Byte. Jedes Byte ist in einer Zeichenfolge wie in Python 2.x ein Buchstaben- / Zahlen- / Interpunktionselement (als Zeichen bezeichnet). Also zum Beispiel:

01101000 01100101 01101100 01101100 01101111
h        e        l        l        o

Der Computer übersetzt diese Bits in Buchstaben, aber in einer herkömmlichen Zeichenfolge (ASCII-Zeichenfolge genannt) gibt es nichts, was auf fetten Text hinweist. In einer Unicode-Zeichenfolge, die etwas anders funktioniert, kann der Computer Zeichen in internationaler Sprache wie chinesische unterstützen, aber auch hier gibt es nichts zu sagen, dass einige Texte fett und andere nicht fett sind. Es gibt auch keine explizite Schriftart, Textgröße usw.

Beim Drucken von HTML geben Sie immer noch eine Zeichenfolge aus. Das Computerprogramm, das diese Zeichenfolge liest (ein Webbrowser), ist jedoch so programmiert, dass Text wie folgt interpretiert wird this is <b>bold</b>: "Dies ist fett " wenn es Ihre Buchstabenfolge in Pixel auf dem Bildschirm konvertiert. Wenn der gesamte Text WYSIWYG wäre, würde der Bedarf an HTML selbst verringert - Sie würden einfach Text in Ihrem Editor auswählen und fett schreiben, anstatt den HTML-Code einzugeben.

Andere Programme verwenden andere Systeme - viele Antworten erklärten ein völlig anderes System zum Drucken von fettem Text auf Terminals. Ich bin froh, dass Sie herausgefunden haben, wie Sie das tun, was Sie tun möchten, aber irgendwann möchten Sie verstehen, wie Zeichenfolgen und Speicher funktionieren.

Ken Kinder
quelle
9
Als unbefriedigend , da diese Antwort könnte scheinen, ist es wahrscheinlich derjenige , der die meisten richtig beantwortet die Frage , wie gefragt . Es ist überhaupt keine Python-Frage, sondern eine Frage, was auch immer das Rendern tut .
John Y
8
Die Sache ist, jeder, der an der Antwort auf diese Frage interessiert ist, versteht Binär und wie es verwendet wird, um Zeichenfolgen darzustellen. Wir sind daran interessiert, wie man Python verwendet, um Text fett erscheinen zu lassen, was oben beantwortet wird. Diese Antwort ist weit über pedantisch.
Trevor
16

Dies hängt davon ab, ob Sie Linux / Unix verwenden:

>>> start = "\033[1m"
>>> end = "\033[0;0m"
>>> print "The" + start + "text" + end + " is bold."
The text is bold.

Das Wort textsollte fett sein.

aayoubi
quelle
13

Schauen Sie sich colorama an . Es hilft nicht unbedingt beim Fettdruck ... aber Sie können sowohl unter Windows als auch unter Linux eine kolorierte Ausgabe durchführen und die Helligkeit steuern:

from colorama import *
init(autoreset=True)
print Fore.RED + 'some red text'
print Style.BRIGHT + Fore.RED + 'some bright red text'
John Szakmeister
quelle
12

In Python gibt es ein sehr nützliches Modul zum Formatieren von Text (fett, unterstrichen, Farben ..). Es verwendet curseslib, ist aber sehr einfach zu bedienen.

Ein Beispiel:

from terminal import render
print render('%(BG_YELLOW)s%(RED)s%(BOLD)sHey this is a test%(NORMAL)s')
print render('%(BG_GREEN)s%(RED)s%(UNDERLINE)sAnother test%(NORMAL)s')

AKTUALISIERT:

Ich habe ein einfaches Modul namens colours.py geschrieben , um dies etwas pythonischer zu gestalten:

import colors

with colors.pretty_output(colors.BOLD, colors.FG_RED) as out:
    out.write("This is a bold red text")

with colors.pretty_output(colors.BG_GREEN) as out:
    out.write("This output have a green background but you " + 
               colors.BOLD + colors.FG_RED + "can" + colors.END + " mix styles")
Diego Navarro
quelle
2
ImportError: No module named terminal ImportError: No module named render Eigentlich ist dies die einzige Seite, die ich über das "Terminal" -Modul finden konnte. Bitte erläutern Sie.
Mineralien
Der obige Link enthielt früher das terminalModul, aber sie haben die Seite umgeleitet. Hier ist der von Google zwischengespeicherte Code .
Diego Navarro
Wie auch immer, ich habe mein eigenes Python-Modul erstellt, um dieses Problem zu lösen. Schauen Sie sich @minerals an ;-)
Diego Navarro
8
print '\033[1m  Your Name  \033[0m'

\ 033 [1m ist der Unicode für Fettdruck im Terminal \ 033 [0m ist der Unicode für das Beenden des bearbeiteten Textes und das Zurücksetzen des Standardtextformats !!!!!

Wenn Sie \ 033 [0m nicht verwenden, wird der gesamte kommende Text des Terminals fett gedruckt !!!!!!!!!

Bhavik Sakhiya
quelle
Bitte fügen Sie eine Erklärung hinzu
Harsha Biyani
2
Bitte lesen Sie eine andere Antwort, bevor Sie antworten! Diese Frage hat viele richtige Antworten mit mehr Erklärungen. Sie fügen nichts Nützliches hinzu.
Mohammad Dehghan
6

Installieren Sie das termcolorModul

sudo pip install termcolor

und versuchen Sie dies für farbigen Text

from termcolor import colored
print colored('Hello', 'green')

oder dies für fetten Text:

from termcolor import colored
print colored('Hello', attrs=['bold'])

In Python 3 können Sie alternativ cprintals Ersatz für das integrierte printElement den optionalen zweiten Parameter für Farben oder den attrsParameter für Fettdruck (und andere Attribute wie underline) zusätzlich zu den normal benannten printArgumenten wie fileoder verwenden end.

import sys
from termcolor import cprint
cprint('Hello', 'green', attrs=['bold'], file=sys.stderr)

Vollständige Offenlegung, diese Antwort basiert stark auf Olu Smiths Antwort und war als Bearbeitung gedacht , was das Rauschen auf dieser Seite erheblich reduziert hätte, aber aufgrund des fehlgeleiteten Konzepts einiger Rezensenten, was eine Bearbeitung sein soll, bin ich jetzt gezwungen um dies zu einer separaten Antwort zu machen.

Christian
quelle
3

Angenommen, Sie meinen wirklich "Drucken" auf einem echten Druckterminal:

>>> text = 'foo bar\r\noof\trab\r\n'
>>> ''.join(s if i & 1 else (s + '\b' * len(s)) * 2 + s
...         for i, s in enumerate(re.split(r'(\s+)', text)))
'foo\x08\x08\x08foo\x08\x08\x08foo bar\x08\x08\x08bar\x08\x08\x08bar\r\noof\x08\
x08\x08oof\x08\x08\x08oof\trab\x08\x08\x08rab\x08\x08\x08rab\r\n'

Senden Sie das einfach an Ihre stdout.

John Machin
quelle
2

Einige Terminals ermöglichen das Drucken von farbigem Text. Einige Farben sehen aus, als wären sie "fett". Versuchen:

print ('\033[1;37mciao!')

Die Sequenz '\ 033 [1; 37m' veranlasst einige Terminals, mit dem Drucken in "hellem Weiß" zu beginnen, das möglicherweise etwas wie fettgedrucktes Weiß aussieht. '\ 033 [0; 0m' schaltet es aus.

Maciek
quelle
2

Einfache Kühnheit - zweizeiliger Code

In Python 3 können Sie colorama - simple_colors verwenden: (Seite Simple Colors: https://pypi.org/project/simple-colors/ - gehen Sie zur Überschrift 'Verwendung'.) Bevor Sie die folgenden Schritte ausführen , stellen Sie sicher, dass Sie pip install simple_colours.

from simple_colors import *
print(green('hello', 'bold'))

Geben Sie hier die Bildbeschreibung ein

PythonMaster202
quelle
Vielen Dank! Wir müssen nur zuerst simple_colors installieren:pip install simple_colors
yzerman