Grundsätzlich fordere ich den Benutzer auf, eine Textzeichenfolge in die Konsole einzugeben, aber die Zeichenfolge ist sehr lang und enthält viele Zeilenumbrüche. Wie würde ich die Zeichenfolge des Benutzers nehmen und alle Zeilenumbrüche löschen, um daraus eine einzelne Textzeile zu machen? Meine Methode zum Erfassen der Zeichenfolge ist sehr einfach.
string = raw_input("Please enter string: ")
Gibt es eine andere Möglichkeit, die Zeichenfolge vom Benutzer zu übernehmen? Ich verwende Python 2.7.4 auf einem Mac.
PS Natürlich bin ich ein Neuling. Selbst wenn eine Lösung nicht die effizienteste ist, wäre die Lösung mit der einfachsten Syntax sehr willkommen.
strip
Entfernt Leerzeichen am Anfang und Ende einer Zeichenfolge, nicht innerhalb der Zeichenfolge ...Antworten:
Wie geben Sie Zeilenumbrüche ein
raw_input
? Sobald Sie jedoch eine Zeichenfolge mit einigen Zeichen haben, möchten Sie diese entfernen, nurreplace
diese.Im obigen Beispiel habe ich alle Leerzeichen ersetzt. Die Zeichenfolge steht
'\n'
für Zeilenumbrüche. Und\r
stellt Wagenrückläufe dar (wenn Sie unter Windows arbeiten, erhalten Sie diese möglicherweise und eine Sekundereplace
erledigt sie für Sie!).Grundsätzlich:
Beachten Sie auch, dass es eine schlechte Idee ist, Ihre Variable aufzurufen
string
, da dies das Modul beschattetstring
. Ein anderer Name, den ich vermeiden würde, aber manchmal gerne verwenden würde :file
. Aus dem gleichen Grunde.quelle
\r
Wagenrückläufe erwähnt . Ich habe alle Methoden zum Entfernen ausprobiert,\n
aber die\r
Zeichen immer noch nicht erfasst .string
, aber aus einem ähnlichen Grund möchten Sie den Variablennamen nicht verwendenstr
.\n
jedoch nicht getan haben\r\n
.Sie können versuchen, Zeichenfolge zu ersetzen:
quelle
Sie können die Zeichenfolge ohne Trennzeichen arg teilen, wodurch aufeinanderfolgende Leerzeichen als einzelnes Trennzeichen (einschließlich Zeilenumbrüche und Tabulatoren) behandelt werden. Dann verbinden Sie sich mit einem Leerzeichen:
https://docs.python.org/2/library/stdtypes.html#str.split
quelle
aktualisiert basierend auf
Xbello
Kommentar:Lesen Sie hier mehr
quelle
rstrip("\r\n")
rstrip('\r\n')
nicht genug war und musste mit gehen:my_string.rstrip('\r\n').replace('\n', ' ')
Eine weitere Option ist Regex:
quelle
r'[\n\r]+'
oder würden sogarr'\s+'
Leerzeichen durch ein einzelnes Leerzeichen ersetzen.Eine Methode, die berücksichtigt
Es wird eine solche mehrzeilige Zeichenfolge benötigt, die z. B. unordentlich sein kann
und erzeugt eine schöne einzeilige Zeichenfolge
UPDATE: So beheben Sie mehrere Zeilenumbrüche, die redundante Leerzeichen erzeugen:
Dies funktioniert auch für Folgendes
test_str = '\nhej ho \n aaa\r\n\n\n\n\n a\n '
quelle
Wenn sich jemand für die Verwendung entscheidet
replace
, sollten Sie esr'\n'
stattdessen versuchen'\n'
quelle
r
("Raw String Literal"). Leider habe ich keine Ahnung warum)Das Problem mit rstrip ist, dass es nicht in allen Fällen funktioniert (wie ich selbst nur wenige gesehen habe). Stattdessen können Sie - text = text.replace ("\ n", "") verwenden. Dadurch werden alle neuen Zeilen \ n mit einem Leerzeichen entfernt.
Vielen Dank im Voraus Jungs für Ihre Upvotes.
quelle