Seite 1 von 1
String gelb ausgeben
Verfasst: Donnerstag 19. März 2020, 18:19
von Bill987654321
Hallo,
ich suche schon eine halbe Stunde nach einer Antwort, wie ich Text farbig ausgeben kann.
Wie ich den ersten Buchstaben eines Strings von einem kleinen Buchstaben in einen großen umwandeln und ausgeben kann, habe ich herausgefunden. Es geht so:
Code: Alles auswählen
text=("hallo welt")
print (text)
print (text.capitalize())
Wie kann ich diesen Text anstatt blau gelb ausgeben? Muss ich ein Modul installieren? Wenn ja welches?
Ich möchte den Text einfach nur gelb ausgeben. RGB-Farben will ich nicht verwenden.
Re: String gelb ausgeben
Verfasst: Donnerstag 19. März 2020, 18:27
von nezzcarth
Bill987654321 hat geschrieben: Donnerstag 19. März 2020, 18:19
Wie kann ich diesen Text anstatt blau gelb ausgeben? Muss ich ein Modul installieren? Wenn ja welches?
Wenn du ein Unix-artiges System verwendest, kannst du direkt mit ANSI Escape Codes arbeiten (
https://en.wikipedia.org/wiki/ANSI_escape_code#Colors). Unter Windows kannst du ein Modul wie z.B. colorma (
https://pypi.org/project/colorama/ ) nehmen.
Re: String gelb ausgeben
Verfasst: Donnerstag 19. März 2020, 18:36
von Bill987654321
Geht das nicht einfacher?
Falls nein - wie bekomme ich das Modul ins Programm? Mit import Colorama? Wenn ich "import colorama" eingebe, erscheint:
Code: Alles auswählen
import colorama
ModuleNotFoundError: No module named 'colorama'
Gibt es kein Modul in Python, das man einfach mit "import" importieren kann?
Re: String gelb ausgeben
Verfasst: Donnerstag 19. März 2020, 19:10
von Bill987654321
Warum funktioniert das Programm mit Ansi-Code nicht?
import os
os.system("cls")
print ("\u001b[33m.Haus")
Re: String gelb ausgeben
Verfasst: Donnerstag 19. März 2020, 19:20
von sparrow
@Bill987654321: nezzcarth hat doch bereits geschrieben, dass Ansi-Codes nur bei unixoiden Sysemen gehen. os.system sollet man nicht mehr verwenden. Für Aufrufe entfernter Programme verwendet man subprocess. Aber in diesem Fall: ein Progamm sollte nicht den Inhalt des Terminals löschen. Mich würde das nerven. Ich bestimme, was auf dem Terminal steht, kein Programm.
Module unter Python installiert man mit dem Programm "pip". Die
Dokumentation hat ein ganzes Kaptiel darüber.
Re: String gelb ausgeben
Verfasst: Donnerstag 19. März 2020, 19:28
von Bill987654321
sparrow hat geschrieben: Donnerstag 19. März 2020, 19:20
@Bill987654321: nezzcarth hat doch bereits geschrieben, dass Ansi-Codes nur bei unixoiden Sysemen gehen. os.system sollet man nicht mehr verwenden. Für Aufrufe entfernter Programme verwendet man subprocess. Aber in diesem Fall: ein Progamm sollte nicht den Inhalt des Terminals löschen. Mich würde das nerven. Ich bestimme, was auf dem Terminal steht, kein Programm.
Module unter Python installiert man mit dem Programm "pip". Die
Dokumentation hat ein ganzes Kaptiel darüber.
Danke für die zeitnahe Antwort.
Ich bin vorerst zufrieden, wenn ich einen String gelb, grün oder orange ausgeben kann.
Da müsste es doch eine einfache Möglichkeit geben ohne Importe, Installationen wie bei "Capitalize".?
Re: String gelb ausgeben
Verfasst: Donnerstag 19. März 2020, 19:38
von __blackjack__
@Bill987654321: `colorama` kann man auch unter Linux verwenden, das heisst man kann dann Programme damit schreiben die unter Windows und Linux laufen. (Ich vermute mal unter MacOS auch.)
Allerdings ist das für Konsolenprogramme die in der Konsole ausgeführt werden. Das erwähne ich weil Du schreibst der Text ist sonst blau — was beispielsweise in IDLE in der Python-Shell der Fall ist. Das ist aber keine Konsole vom Betriebssystem, dort funktioniert weder das Windows-Command-Shell Kommando ``cls`` noch ANSI-Escape-Sequenzen.
Wenn man ANSI-Escape-Sequenzen verwendet, sollte man kein betriebssystemabhängiges Programm wie ``cls`` verwenden, denn auch das leeren der Konsole kann man mit dem entsprechenden Escape-Sequenzen erledigen. Zudem: Finger weg von `os.system()`, dafür gibt es das `subprocess`-Modul.
`colorama` kann man natürlich nur importieren wenn man es vorher auch installiert hat. Man *braucht* das unter Windows weil dort die Konsole normalerweise keine ANSI-Escape-Codes versteht. In aktuellen Windowsversionen kann man das aber wohl in der Konsole oder in der PowerShell-Konsole irgendwo aktivieren. Da müsste vielleicht mal ein Windows-Nutzer was zu sagen.
Grundsätzlich ist Farbe halt nicht vorgesehen weil die Schnittstelle für Konsolenprogramme als kleinsten gemeinsamen Nenner die drei Dateien `sys.stdin`, `sys.stdout`, und `sys.stderr` hat. Da kann man Text einlesen beziehungsweise schreiben. Von welchem Programm auch immer das damit verbunden ist. Das muss ja auch gar keine Konsole sein, man kann die Ein- und Ausgaben ja auch aus/in Dateien umgeleitet haben, oder das Programm wurde von einem anderen Programm gestartet das die Dateien auf seiner Seite der Verbindung liest/beschreibt.
Bei Unix ist es bei Terminalemulatoren üblich, dass die mindestens einen Teil der ANSI-Escape-Sequenzen interpretieren. Früher unter DOS konnte man sich einen Treiber dafür installieren der bei DOS dabei war. Unter Windows ist das in der Konsole dann irgendwann aus der Mode gekommen, weil die Leute wenn sie mehr als einfachen Text haben wollten, dann eher eine GUI-Anwendung geschrieben haben.
Wenn ich in Konsolenanwendungen etwas farbig ausgeben will, dann meistens über das `click`-Modul wenn ich das sowieso schon in dem Programm verwende. Das funktioniert betriebssystemübergreifend, und hat unter Windows `colorama` als Abhängigkeit. Wenn es eher ein interaktives Konsolenprogramm werden soll, könnte man auch einen Blick auf das `prompt_toolkit` werfen. Das steckt unter anderem hinter IPython in der Konsole. Falls mir Windows nicht wichtig ist, habe ich auch schon mal das `blessings`-Modul für etwas Buntes in der Konsole verwendet.
Falls die Ausgabe bei Dir tatsächlich in IDLE stattfindet würde ich sagen es lohnt nicht dafür farbige Ausgaben zu hacken. Das funktioniert dann nur dort, und wer führt schon Programme mit IDLE aus…
Re: String gelb ausgeben
Verfasst: Donnerstag 19. März 2020, 19:58
von Bill987654321
__blackjack__ hat geschrieben: Donnerstag 19. März 2020, 19:38
@Bill987654321: `colorama` kann man auch unter Linux verwenden, das heisst man kann dann Programme damit schreiben die unter Windows und Linux laufen. (Ich vermute mal unter MacOS auch.)
Allerdings ist das für Konsolenprogramme die in der Konsole ausgeführt werden. Das erwähne ich weil Du schreibst der Text ist sonst blau — was beispielsweise in IDLE in der Python-Shell der Fall ist. Das ist aber keine Konsole vom Betriebssystem, dort funktioniert weder das Windows-Command-Shell Kommando ``cls`` noch ANSI-Escape-Sequenzen.
Wenn man ANSI-Escape-Sequenzen verwendet, sollte man kein betriebssystemabhängiges Programm wie ``cls`` verwenden, denn auch das leeren der Konsole kann man mit dem entsprechenden Escape-Sequenzen erledigen. Zudem: Finger weg von `os.system()`, dafür gibt es das `subprocess`-Modul.
`colorama` kann man natürlich nur importieren wenn man es vorher auch installiert hat. Man *braucht* das unter Windows weil dort die Konsole normalerweise keine ANSI-Escape-Codes versteht. In aktuellen Windowsversionen kann man das aber wohl in der Konsole oder in der PowerShell-Konsole irgendwo aktivieren. Da müsste vielleicht mal ein Windows-Nutzer was zu sagen.
Grundsätzlich ist Farbe halt nicht vorgesehen weil die Schnittstelle für Konsolenprogramme als kleinsten gemeinsamen Nenner die drei Dateien `sys.stdin`, `sys.stdout`, und `sys.stderr` hat. Da kann man Text einlesen beziehungsweise schreiben. Von welchem Programm auch immer das damit verbunden ist. Das muss ja auch gar keine Konsole sein, man kann die Ein- und Ausgaben ja auch aus/in Dateien umgeleitet haben, oder das Programm wurde von einem anderen Programm gestartet das die Dateien auf seiner Seite der Verbindung liest/beschreibt.
Bei Unix ist es bei Terminalemulatoren üblich, dass die mindestens einen Teil der ANSI-Escape-Sequenzen interpretieren. Früher unter DOS konnte man sich einen Treiber dafür installieren der bei DOS dabei war. Unter Windows ist das in der Konsole dann irgendwann aus der Mode gekommen, weil die Leute wenn sie mehr als einfachen Text haben wollten, dann eher eine GUI-Anwendung geschrieben haben.
Wenn ich in Konsolenanwendungen etwas farbig ausgeben will, dann meistens über das `click`-Modul wenn ich das sowieso schon in dem Programm verwende. Das funktioniert betriebssystemübergreifend, und hat unter Windows `colorama` als Abhängigkeit. Wenn es eher ein interaktives Konsolenprogramm werden soll, könnte man auch einen Blick auf das `prompt_toolkit` werfen. Das steckt unter anderem hinter IPython in der Konsole. Falls mir Windows nicht wichtig ist, habe ich auch schon mal das `blessings`-Modul für etwas Buntes in der Konsole verwendet.
Falls die Ausgabe bei Dir tatsächlich in IDLE stattfindet würde ich sagen es lohnt nicht dafür farbige Ausgaben zu hacken. Das funktioniert dann nur dort, und wer führt schon Programme mit IDLE aus…
Ich

führe Programme mit IDLE aus. Wie sollte ich sie denn ausführen? (Bin leider ein Anfänger, der mit vielen Fachbegriffen (noch) nichts anfangen kann.)
Werde wohl auf die farbige Darstellung der Strings verzichten.
Welche "Befehle" gibt es außer "Capitalize" noch? Gibt es einen, mit dem ich einen Text komplett in Großbuchstaben umwandeln kann, also nicht nur den ersten?
Re: String gelb ausgeben
Verfasst: Donnerstag 19. März 2020, 20:37
von noisefloor
Hallo,
Welche "Befehle" gibt es außer "Capitalize" noch? Gibt es einen, mit dem ich einen Text komplett in Großbuchstaben umwandeln kann, also nicht nur den ersten?
Ja, die Methode heißt "upper()". Das steht aber auch alles in der Python-Doku...
BTW: hast du schon mal das Python Tutorial auf docs.python.org durchgearbeitet?
Bzgl. IDLE: das benutzt eigentlich kaum einer außer Einsteiger. Weil: es gibt wenig Gründe, IDLE zu nutzen. Der "normale" Weg ist: Skript im Editor schreiben, speichern und dann via `python3 mein_skript.py` bzw. `python mein_skript.py` im Terminal ausführen.
Gruß, noisefloor
Re: String gelb ausgeben
Verfasst: Donnerstag 19. März 2020, 21:14
von nezzcarth
Bill987654321 hat geschrieben: Donnerstag 19. März 2020, 19:58
Welche "Befehle" gibt es außer "Capitalize" noch? Gibt es einen, mit dem ich einen Text komplett in Großbuchstaben umwandeln kann, also nicht nur den ersten?
Um das herauszufinden eignet sich (neben der offiziellen Pythondoku, die immer die erste Anlaufstelle sein sollte bei solchen Fragen), der interaktive Interpreter sehr gut. Dort gibt es die Befehle 'dir()' und 'help()' mit denen du ei4vdie Methoden und Attribute eines Objekts sowie Hilfen anzeigen lassen kannst.
z.B.:
Code: Alles auswählen
>> dir('foo')
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
>>> help('foo'.zfill)
Die Erklärungen von help sind jedoch nicht ganz so ausführlich wie die in der Doku.
Re: String gelb ausgeben
Verfasst: Freitag 20. März 2020, 17:13
von Bill987654321
nezzcarth hat geschrieben: Donnerstag 19. März 2020, 21:14
Bill987654321 hat geschrieben: Donnerstag 19. März 2020, 19:58
Welche "Befehle" gibt es außer "Capitalize" noch? Gibt es einen, mit dem ich einen Text komplett in Großbuchstaben umwandeln kann, also nicht nur den ersten?
Um das herauszufinden eignet sich (neben der offiziellen Pythondoku, die immer die erste Anlaufstelle sein sollte bei solchen Fragen), der interaktive Interpreter sehr gut. Dort gibt es die Befehle 'dir()' und 'help()' mit denen du ei4vdie Methoden und Attribute eines Objekts sowie Hilfen anzeigen lassen kannst.
z.B.:
Code: Alles auswählen
>> dir('foo')
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
>>> help('foo'.zfill)
Die Erklärungen von help sind jedoch nicht ganz so ausführlich wie die in der Doku.
Ist der interaktive Interpreter in der in der Python-IDLE enthalten?
Wenn nein - wo ist er?
Re: String gelb ausgeben
Verfasst: Freitag 20. März 2020, 17:16
von __blackjack__
@Bill987654321: Du siehst doch die drei ">", woher kommt Dir das denn bekannt vor‽ Probier es doch einfach mal aus.
Re: String gelb ausgeben
Verfasst: Freitag 20. März 2020, 17:16
von Bill987654321
__blackjack__ hat geschrieben: Donnerstag 19. März 2020, 19:38
@Bill987654321: `colorama` kann man auch unter Linux verwenden, das heisst man kann dann Programme damit schreiben die unter Windows und Linux laufen. (Ich vermute mal unter MacOS auch.)
Allerdings ist das für Konsolenprogramme die in der Konsole ausgeführt werden. Das erwähne ich weil Du schreibst der Text ist sonst blau — was beispielsweise in IDLE in der Python-Shell der Fall ist. Das ist aber keine Konsole vom Betriebssystem, dort funktioniert weder das Windows-Command-Shell Kommando ``cls`` noch ANSI-Escape-Sequenzen.
Wenn man ANSI-Escape-Sequenzen verwendet, sollte man kein betriebssystemabhängiges Programm wie ``cls`` verwenden, denn auch das leeren der Konsole kann man mit dem entsprechenden Escape-Sequenzen erledigen. Zudem: Finger weg von `os.system()`, dafür gibt es das `subprocess`-Modul.
`colorama` kann man natürlich nur importieren wenn man es vorher auch installiert hat. Man *braucht* das unter Windows weil dort die Konsole normalerweise keine ANSI-Escape-Codes versteht. In aktuellen Windowsversionen kann man das aber wohl in der Konsole oder in der PowerShell-Konsole irgendwo aktivieren. Da müsste vielleicht mal ein Windows-Nutzer was zu sagen.
Grundsätzlich ist Farbe halt nicht vorgesehen weil die Schnittstelle für Konsolenprogramme als kleinsten gemeinsamen Nenner die drei Dateien `sys.stdin`, `sys.stdout`, und `sys.stderr` hat. Da kann man Text einlesen beziehungsweise schreiben. Von welchem Programm auch immer das damit verbunden ist. Das muss ja auch gar keine Konsole sein, man kann die Ein- und Ausgaben ja auch aus/in Dateien umgeleitet haben, oder das Programm wurde von einem anderen Programm gestartet das die Dateien auf seiner Seite der Verbindung liest/beschreibt.
Bei Unix ist es bei Terminalemulatoren üblich, dass die mindestens einen Teil der ANSI-Escape-Sequenzen interpretieren. Früher unter DOS konnte man sich einen Treiber dafür installieren der bei DOS dabei war. Unter Windows ist das in der Konsole dann irgendwann aus der Mode gekommen, weil die Leute wenn sie mehr als einfachen Text haben wollten, dann eher eine GUI-Anwendung geschrieben haben.
Wenn ich in Konsolenanwendungen etwas farbig ausgeben will, dann meistens über das `click`-Modul wenn ich das sowieso schon in dem Programm verwende. Das funktioniert betriebssystemübergreifend, und hat unter Windows `colorama` als Abhängigkeit. Wenn es eher ein interaktives Konsolenprogramm werden soll, könnte man auch einen Blick auf das `prompt_toolkit` werfen. Das steckt unter anderem hinter IPython in der Konsole. Falls mir Windows nicht wichtig ist, habe ich auch schon mal das `blessings`-Modul für etwas Buntes in der Konsole verwendet.
Falls die Ausgabe bei Dir tatsächlich in IDLE stattfindet würde ich sagen es lohnt nicht dafür farbige Ausgaben zu hacken. Das funktioniert dann nur dort, und wer führt schon Programme mit IDLE aus…
Danke für die ausführliche Erklärung. Habe sie heute mal in aller Ruhe gelesen und das Meiste verstanden.
Re: String gelb ausgeben
Verfasst: Freitag 20. März 2020, 17:24
von Bill987654321
noisefloor hat geschrieben: Donnerstag 19. März 2020, 20:37
Hallo,
Welche "Befehle" gibt es außer "Capitalize" noch? Gibt es einen, mit dem ich einen Text komplett in Großbuchstaben umwandeln kann, also nicht nur den ersten?
Ja, die Methode heißt "upper()". Das steht aber auch alles in der Python-Doku...
BTW: hast du schon mal das Python Tutorial auf docs.python.org durchgearbeitet?
Bzgl. IDLE: das benutzt eigentlich kaum einer außer Einsteiger. Weil: es gibt wenig Gründe, IDLE zu nutzen. Der "normale" Weg ist: Skript im Editor schreiben, speichern und dann via `python3 mein_skript.py` bzw. `python mein_skript.py` im Terminal ausführen.
Gruß, noisefloor
Ich habe gerade mal "Pyhon 3.8 (32 bit)" geöffnet. Ist das der Editor? Wozu braucht man das?
Warum gibt es hier keine Register, Laschen usw.?
Wie kann man z.B. speichern?

Re: String gelb ausgeben
Verfasst: Freitag 20. März 2020, 17:37
von __blackjack__
@Bill987654321: *Das* ist Python. Das braucht man um Python-Code auszuführen. Wenn man kein Modul angibt was ausgeführt werden soll, dann landet man im interaktiven Interpreter. Es gibt keine Register/Laschen usw. weil das keine GUI-Anwendung ist. Das ist ein Konsolenfenster in dem eben nur die Konsolenanwendung Python drin läuft. Speichern kann man den Inhalt des Fensters nicht, jedenfalls nicht von Python aus. Es kann sein, dass das Konsolenfenster in dem das läuft eventuell solche Funktionalität zur Verfügung stellt.
Re: String gelb ausgeben
Verfasst: Freitag 20. März 2020, 18:00
von noisefloor
Hallo,
arbeite mal _dringend_ das oben genannten Tutorial durch. Das sind die ganzen Sache auch erklärt.
Grundsätzlich: wer programmiert muss sich früher oder später auch mit der Kommdozeile im Terminal anfreunden. Auch als Windows.Nutzer, wo man das im "normalen" Betrieb eher selten braucht.
Gruß, noisefloor
Re: String gelb ausgeben
Verfasst: Freitag 20. März 2020, 18:49
von Bill987654321
__blackjack__ hat geschrieben: Freitag 20. März 2020, 17:37
@Bill987654321: *Das* ist Python. Das braucht man um Python-Code auszuführen. Wenn man kein Modul angibt was ausgeführt werden soll, dann landet man im interaktiven Interpreter. Es gibt keine Register/Laschen usw. weil das keine GUI-Anwendung ist. Das ist ein Konsolenfenster in dem eben nur die Konsolenanwendung Python drin läuft. Speichern kann man den Inhalt des Fensters nicht, jedenfalls nicht von Python aus. Es kann sein, dass das Konsolenfenster in dem das läuft eventuell solche Funktionalität zur Verfügung stellt.
Was ist der Sinn einer Konsole bzw. eines Konsolenfensters?
Re: String gelb ausgeben
Verfasst: Freitag 20. März 2020, 19:52
von __deets__
Kannst du mal bitte aufhören jeden Beitrag in Gänze zu zitieren?
Eine Konsole ist schon lange vor Graphischen Oberflächen der Weg gewesen, einem Computer zu sagen was man von ihm will.