Wie entferne ich alle Leerzeichen in einer Python-Zeichenfolge? Zum Beispiel möchte ich, dass aus einer Zeichenfolge strip my spaces
etwas wird stripmyspaces
, aber ich kann das anscheinend nicht erreichen mit strip()
:
>>> 'strip my spaces'.strip()
'strip my spaces'
python
python-3.x
spaces
strip
falscher Benutzername
quelle
quelle
Antworten:
Nutzen Sie das Verhalten von str.split ohne sep-Parameter:
Wenn Sie nur Leerzeichen anstelle aller Leerzeichen entfernen möchten:
Vorzeitige Optimierung
Auch wenn Effizienz nicht das Hauptziel ist - das Schreiben von klarem Code ist dies -, sind hier einige erste Zeitpunkte:
Beachten Sie, dass der reguläre Ausdruck zwischengespeichert ist, sodass er nicht so langsam ist, wie Sie es sich vorstellen können. Kompilieren es einige vorher hilft, würde aber in der Praxis nur aus , wenn Sie diese nennen viele Male:
Auch wenn re.sub 11,3x langsamer ist, denken Sie daran, dass Ihre Engpässe sicherlich anderswo liegen. Die meisten Programme würden den Unterschied zwischen diesen drei Optionen nicht bemerken.
quelle
\s+
Substitution. Ich würde bei re bleiben.s.translate
Methode zufällig ausprobiert ? Es übertrifft wahrscheinlich alle auf dieser Seite gezeigten Methoden.None
- obwohl es überraschenderweise langsamer macht ...myString.translate(None, " \t\r\n\v")
. Es dauert nur 83% so lange wie Rogers schnellste (Split and Join) Technik. Ich bin mir nicht sicher, ob es alle Leerzeichen abdeckt, die geteilt werden, aber es wird wahrscheinlich für die meisten ASCII-Anwendungen ausreichen.Behandelt auch alle Leerzeichen, an die Sie nicht denken (glauben Sie mir, es gibt viele).
quelle
Alternative,
Und hier ist die Python3-Version:
quelle
NameError: name 'string' is not defined
.import string
Am einfachsten ist es, replace zu verwenden:
Verwenden Sie alternativ einen regulären Ausdruck:
quelle
Entfernen Sie die Startbereiche in Python
Entfernen Sie die nachgestellten oder Endbereiche in Python
Entfernen Sie die whiteSpaces vom Anfang und Ende der Zeichenfolge in Python
Entfernen Sie alle Leerzeichen in Python
quelle
Versuchen Sie eine Regex mit
re.sub
. Sie können nach allen Leerzeichen suchen und durch eine leere Zeichenfolge ersetzen.\s
In Ihrem Muster werden Leerzeichen angezeigt - und nicht nur Leerzeichen (Tabulatoren, Zeilenumbrüche usw.). Sie können mehr darüber im Handbuch lesen .quelle
quelle
Wie von Roger Pate erwähnt, hat der folgende Code für mich funktioniert:
Ich verwende Jupyter Notebook, um folgenden Code auszuführen:
quelle
Es gelten die Standardtechniken zum Filtern einer Liste, obwohl sie nicht so effizient sind wie die Methoden
split/join
odertranslate
.Wir brauchen eine Reihe von Leerzeichen:
Das
filter
eingebaute:Ein Listenverständnis (ja, verwenden Sie die Klammern: siehe Benchmark unten):
Eine Falte:
Benchmark:
quelle
TL / DR
Diese Lösung wurde mit Python 3.6 getestet
Um alle Leerzeichen aus einer Zeichenfolge in Python3 zu entfernen, können Sie die folgende Funktion verwenden:
Mit Leerzeichen können Sie Leerzeichen ('\ t \ n \ r \ x0b \ x0c') entfernen:
Erläuterung
Die Python-
str.translate
Methode ist eine integrierte Klassenmethode von str. Sie verwendet eine Tabelle und gibt eine Kopie der Zeichenfolge zurück, wobei jedes Zeichen durch die übergebene Übersetzungstabelle zugeordnet wird. Vollständige Dokumentation für str.translateZum Erstellen wird die Übersetzungstabelle
str.maketrans
verwendet. Diese Methode ist eine weitere integrierte Klassenmethode vonstr
. Hier verwenden wir es mit nur einem Parameter, in diesem Fall einem Wörterbuch, wobei die Schlüssel die zu ersetzenden Zeichen sind, die Werten mit dem Zeichenersetzungswert zugeordnet sind. Es gibt eine Übersetzungstabelle zur Verwendung mit zurückstr.translate
. Vollständige Dokumentation für str.maketransDas
string
Modul in Python enthält einige allgemeine Zeichenfolgenoperationen und Konstanten.string.whitespace
ist eine Konstante, die eine Zeichenfolge zurückgibt, die alle ASCII-Zeichen enthält, die als Leerzeichen betrachtet werden. Dies umfasst den Zeichenbereich, die Registerkarte, den Zeilenvorschub, die Rückgabe, den Formularvorschub und die vertikale Registerkarte. Vollständige Dokumentation für ZeichenfolgeIn der zweiten Funktion
dict.fromkeys
wird ein Wörterbuch erstellt, in dem die Schlüssel die Zeichen in der Zeichenfolge sind, die vonstring.whitespace
jedem mit Wert zurückgegeben werdenNone
. Vollständige Dokumentation für dict.fromkeysquelle
Wenn eine optimale Leistung keine Voraussetzung ist und Sie nur etwas ganz Einfaches wollen, können Sie eine Grundfunktion definieren, um jedes Zeichen mithilfe der in der Zeichenfolgeklasse integrierten "isspace" -Methode zu testen:
Das Erstellen des
no_white_space
Strings auf diese Weise hat keine ideale Leistung, aber die Lösung ist leicht zu verstehen.Wenn Sie keine Funktion definieren möchten, können Sie diese mit Listenverständnis in etwas vage Ähnliches konvertieren. Aus der
join
Lösung der Top-Antwort entlehnt:quelle