Ich möchte alle Leerzeichen aus einer Zeichenfolge an beiden Enden und zwischen den Wörtern entfernen.
Ich habe diesen Python-Code:
def my_handle(self):
sentence = ' hello apple '
sentence.strip()
Dadurch wird jedoch nur das Leerzeichen auf beiden Seiten der Zeichenfolge entfernt. Wie entferne ich alle Leerzeichen?
python
trim
removing-whitespace
co2f2e
quelle
quelle
hello apple
?helloapple
?Antworten:
Wenn Sie führende und endende Leerzeichen entfernen möchten, verwenden Sie
str.strip()
:Wenn Sie alle Leerzeichen entfernen möchten, verwenden Sie
str.replace()
:(Hinweis: Dadurch wird nur das "normale" ASCII-Leerzeichen entfernt,
' ' U+0020
jedoch kein anderes Leerzeichen. )Wenn Sie doppelte Leerzeichen entfernen möchten, verwenden Sie
str.split()
:quelle
sentence.join(str_list)
, bitten Sie Python, Elemente aus str_listsentence
als Trennzeichen zu verknüpfen ."".join(sentence.split())
ist in der Tat die kanonische Lösung, bei der alle Leerzeichen und nicht nur Leerzeichen effizient entfernt werden. Die ausgezeichnete Antwort von Mark Byers hätte wahrscheinlich anstelle dieser weniger zutreffenden Antwort akzeptiert werden müssen.Um nur Leerzeichen zu entfernen , verwenden Sie
str.replace
:So entfernen Sie alle Leerzeichen (Leerzeichen, Tabulator, neue Zeile, und so weiter) , die Sie verwenden können ,
split
dannjoin
:oder ein regulärer Ausdruck:
Wenn Sie nur Leerzeichen von Anfang und Ende entfernen möchten, können Sie Folgendes verwenden
strip
:Sie können auch
lstrip
Leerzeichen nur am Anfang der Zeichenfolge undrstrip
Leerzeichen am Ende der Zeichenfolge entfernen.quelle
yourstr.translate(str.maketrans('', '', ' \n\t\r'))
Eine Alternative besteht darin, reguläre Ausdrücke zu verwenden und diese seltsamen Leerzeichen ebenfalls abzugleichen. Hier sind einige Beispiele:
Entfernen Sie ALLE Leerzeichen in einer Zeichenfolge, auch zwischen Wörtern:
Entfernen Sie Leerzeichen am ANFANG einer Zeichenfolge:
Entfernen Sie Leerzeichen im ENDE einer Zeichenfolge:
Entfernen Sie Leerzeichen sowohl am ANFANG als auch am Ende einer Zeichenfolge:
NUR DUPLICATE Leerzeichen entfernen:
(Alle Beispiele funktionieren sowohl in Python 2 als auch in Python 3)
quelle
Whitespace enthält Leerzeichen, Tabulatoren und CRLF . Eine elegante und einzeilige String-Funktion, die wir verwenden können, ist
str.translate
:Python 3
ODER wenn Sie gründlich sein wollen:
Python 2
ODER wenn Sie gründlich sein wollen:
quelle
\xc2\xa0
ans.translate( None, string.whitespace )
produziert nurbuiltins.TypeError: translate() takes exactly one argument (2 given)
für mich. Docs sagt, dass das Argument eine Übersetzungstabelle ist, siehe string.maketrans (). Aber siehe Kommentar von Amnon Harel unten.' hello apple'.translate(str.maketrans('', '', string.whitespace))
Hinweis: Es ist besser, eine Variable zum Speichern der Trans-Tabelle zu erstellen, wenn Sie dies mehrmals tun möchten.Verwenden Sie zum Entfernen von Leerzeichen von Anfang und Ende
strip
.quelle
MaK hat bereits oben auf die "Übersetzungs" -Methode hingewiesen. Und diese Variante funktioniert mit Python 3 (siehe diese Fragen und Antworten ).
quelle
xxx.translate( { ord(c) :None for c in string.whitespace } )
aus Gründen der Gründlichkeit.Achtung:
strip
führt einen rstrip und einen lstrip aus (entfernt führende und nachfolgende Leerzeichen, Tabulatoren, Rückgaben und Formular-Feeds, entfernt sie jedoch nicht in der Mitte des Strings).Wenn Sie nur Leerzeichen und Tabulatoren ersetzen, kann dies zu versteckten CRLFs führen, die anscheinend dem entsprechen, wonach Sie suchen, aber nicht identisch sind.
quelle
quelle
Darüber hinaus weist der Streifen einige Variationen auf:
Entfernen Sie Leerzeichen in ANFANG und ENDE einer Zeichenfolge:
Entfernen Sie Leerzeichen am ANFANG einer Zeichenfolge:
Entfernen Sie Leerzeichen im ENDE einer Zeichenfolge:
Alle drei Zeichenfolgenfunktionen
strip
lstrip
undrstrip
können Parameter der Zeichenfolge zum Entfernen übernehmen, wobei die Standardeinstellung nur Leerzeichen ist. Dies kann hilfreich sein, wenn Sie mit etwas Bestimmtem arbeiten. Sie können beispielsweise nur Leerzeichen, aber keine Zeilenumbrüche entfernen:Oder Sie können zusätzliche Kommas entfernen, wenn Sie eine Zeichenfolgenliste einlesen:
quelle
Python-Dokumente:
quelle
re
bereits vorgeschlagen wurde, aber ich stellte fest, dass die tatsächliche Antwort auf den Fragentitel unter allen anderen Optionen etwas verborgen war.