2012-04-19 11 views
6

Ich verwende raw_input() zum Speichern einer Nachricht in einer Variablen. Daher kann ich Enter nicht drücken, um einen neuen Absatz einzufügen. Wenn ich jetzt Enter drücke, gehe ich einfach zum nächsten Teil meines Programms.Wie fügt man eine neue Zeile in die Python-Funktion raw_input() ein?

Ich habe bereits versucht, so etwas wie dieses:

>>> message = raw_input("Message: ") 
Message: Hello Sir, \n It's great that.. 
>>> message 
"Hello Sir, \\n It's great that.." 
>>> 

es nicht funktioniert hat, und ich habe auch versucht, es in einfachen und doppelten Anführungszeichen einschließt, die gearbeitet haben auch nicht.

Ich verstehe, dass es andere Möglichkeiten gibt, dies zu tun, wie mit wxpython oder tkinter, aber ich möchte es halten streng Konsole. Ist das möglich?

Antwort

7

Können Sie das Modul sys verwenden? Dies wird den Trick tun, wenn Sie möchten. Drücken Sie einfach Strg-D, um es zu beenden.

import sys 
message = sys.stdin.readlines() 

Andernfalls Ihre Frage damit beantwortet: Python raw_input ignore newline

+0

sys.stdin.readlines() funktioniert wie ein Charme, aber ich kann nicht scheinen, ctrl-d zu bekommen, weiß ich nicht zu arbeiten, warum? – coffeeNcode

+0

Ich habe es herausgefunden, ich muss stattdessen Ctrl-C verwenden, aber jetzt bekomme ich einen Tastatur-Interrupt-Fehler, wenn ich versuchte, die Nachricht zu drucken. – coffeeNcode

+1

Ich habe es endlich herausgefunden! Ich kann ctrl-c nicht benutzen, das ist der Grund für den Interrupt-Fehler der Tastatur, und ich kann ctrl-d nicht benutzen, weil ich Windows benutze, ich muss ctrl-z oder f6 benutzen und dann wird es in der Konsole angezeigt wie dies^Z und drücken Sie Enter. Danach muss ich die Nachricht von einer Liste zurück in eine Zeichenkette konvertieren, was ich so mache. >>> roughmessage = sys.stdin.readlines() >>> message = '' .join (grobe Nachricht) – coffeeNcode

Verwandte Themen