So vermeiden Sie das Einfügen neuer Zeilen in Eingabefunktionen
Bei der Verwendung der Eingabefunktion in Python ist es oft wünschenswert, zu verhindern, dass sie automatisch hinzugefügt wird eine neue Zeile nach der Eingabe des Benutzers. Dies ermöglicht in bestimmten Szenarien einen reibungsloseren Ablauf.
Um dies zu erreichen, sind viele Python-Benutzer mit der Methode vertraut, das Newline-Zeichen in Druckanweisungen mithilfe eines abschließenden Kommas zu unterdrücken. Die gleiche Technik gilt jedoch nicht für den Umgang mit Eingabefunktionen wie raw_input in Python 2.x oder input in Python 3.x.
Das Problem verstehen
Bei Verwendung von raw_input (oder input) wird nach der Benutzereingabe konsistent ein neues Zeilenzeichen (dargestellt als „n“) angehängt. Dies kann in Situationen problematisch sein, in denen die Eingabeaufforderung in derselben Zeile wie die Eingabe folgen muss, wie im folgenden Beispiel:
print "Hello, " name = raw_input() print ", how do you do?"
Ergebnis:
Hello, Tomas , how do you do?
Gewünschtes Ergebnis:
Hello, Tomas, how do you do?
Die Einschränkung überwinden
Methode 1: Einen benutzerdefinierten Ansatz verwenden
Wie von Ferdinand Beyer erwähnt, ist es grundsätzlich nicht möglich, das Newline-Zeichen direkt aus raw_input oder input zu entfernen. Es gibt jedoch eine Problemumgehung, die einen benutzerdefinierten Ansatz beinhaltet.
Durch die Nutzung von Terminal-Steuersequenzen ' 33[{}C 33[1A'.format(len(x) y), wobei x die Länge des Benutzers ist input und y die Länge des raw_input-Strings ist, ist es möglich, den Cursor zurück in die Zeile zu bewegen, bevor die Eingabe eingegeben wurde.
Methode 2: Alternativen zu Eingabefunktionen
Alternativ gibt es andere Methoden, um Benutzereingaben zu sammeln, ohne dass das Newline-Problem auftritt. Eine solche Methode ist die Verwendung des getpass-Moduls:
import getpass name = getpass.getpass("Hello, ") print ", how do you do?"
Dieser Ansatz zeigt die Eingabeaufforderung ohne abschließende neue Zeile an und gibt die Eingabe direkt zurück, wodurch ein zusätzlicher Zeilenumbruch vermieden wird. Es deaktiviert jedoch auch das Echo der Eingabe, was möglicherweise nicht für alle Situationen geeignet ist.
Zusammenfassend lässt sich sagen, dass es zwar nicht möglich ist, zu verhindern, dass raw_input oder input eine neue Zeile anfügt, aber einen benutzerdefinierten Ansatz mit Terminal-Steuersequenzen oder verwendet Die Erforschung alternativer Eingabemethoden wie getpass kann eine Lösung bieten, die auf spezifische Anforderungen abgestimmt ist.
Das obige ist der detaillierte Inhalt vonWie verhindert man das Einfügen von Zeilenumbrüchen in Pythons Eingabefunktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!