1230 Stimmen

Entfernen aller Leerzeichen in einer Zeichenkette

Ich möchte alle Leerzeichen aus einer Zeichenkette entfernen, sowohl an den Enden als auch zwischen den Wörtern.

Ich habe diesen Python-Code:

def my_handle(self):
    sentence = ' hello  apple  '
    sentence.strip()

Dadurch werden jedoch nur die Leerzeichen auf beiden Seiten der Zeichenkette entfernt. Wie kann ich alle Leerzeichen entfernen?

13voto

Amnon Harel Punkte 121
' hello  \n\tapple'.translate({ord(c):None for c in ' \n\t\r'})

MaK hat oben bereits auf die Methode "Übersetzen" hingewiesen. Und diese Variante funktioniert auch mit Python 3 (siehe diese Fragen und Antworten ).

11voto

cacti5 Punkte 1780

Darüber hinaus, Streifen hat einige Variationen:

Leerzeichen am BEGINN und ENDE einer Zeichenkette entfernen:

sentence= sentence.strip()

Leerzeichen am BEGINN einer Zeichenkette entfernen:

sentence = sentence.lstrip()

Leerzeichen am ENDE einer Zeichenkette entfernen:

sentence= sentence.rstrip()

Alle drei String-Funktionen strip lstrip y rstrip kann Parameter der zu entfernenden Zeichenkette entgegennehmen, wobei die Voreinstellung alle Leerzeichen sind. Dies kann hilfreich sein, wenn Sie mit etwas Bestimmtem arbeiten, z. B. wenn Sie nur Leerzeichen, aber keine Zeilenumbrüche entfernen möchten:

" 1. Step 1\n".strip(" ")

Oder Sie könnten zusätzliche Kommas entfernen, wenn Sie eine String-Liste einlesen:

"1,2,3,".strip(",")

7voto

yan bellavance Punkte 4500

Seien Sie vorsichtig:

strip führt einen rstrip und lstrip durch (entfernt führende und nachfolgende Leerzeichen, Tabulatoren, Zeilenumbrüche und Seitenvorschübe, aber nicht in der Mitte der Zeichenkette).

Wenn Sie nur Leerzeichen und Tabulatoren ersetzen, können Sie versteckte CRLFs erhalten, die scheinbar mit dem Gesuchten übereinstimmen, aber nicht dasselbe sind.

6voto

handle Punkte 5667

entfernt alle Leerzeichen aus einer Zeichenkette, sowohl an den Enden als auch zwischen den Wörtern.

import re re.sub("\s+", # one or more repetition of whitespace '', # replace with empty string (->remove) ''' hello ... apple ... ''') 'helloapple'

Python-Dokumente:

5voto

naoki fujita Punkte 601

Ich verwende split(), um alle Leerzeichen zu ignorieren, und verwende join() zum Verketten Zeichenketten.

sentence = ''.join(' hello  apple  '.split())
print(sentence) #=> 'helloapple'

Ich bevorzuge diesen Ansatz, da es sich nur um einen Ausdruck handelt (nicht um eine Aussage).
Sie ist einfach zu verwenden und kann ohne Bindung an eine Variable verwendet werden.

print(''.join(' hello  apple  '.split())) # no need to binding to a variable

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X