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?

2331voto

Cédric Julien Punkte 74976

Wenn Sie führende und endende Leerzeichen entfernen möchten, verwenden Sie str.strip() :

>>> "  hello  apple  ".strip()
'hello  apple'

Wenn Sie alle Leerzeichen entfernen wollen, verwenden Sie str.replace() _(Hinweis: Dadurch wird nur das "normale" ASCII-Leerzeichen entfernt. ' ' U+0020 aber nicht beliebige andere Leerzeichen )_ :

>>> "  hello  apple  ".replace(" ", "")
'helloapple'

Wenn Sie doppelte Leerzeichen entfernen möchten, verwenden Sie str.split() gefolgt von str.join() :

>>> " ".join("  hello  apple  ".split())
'hello apple'

432voto

Mark Byers Punkte 761508

Zum Entfernen nur Leerzeichen verwenden. str.replace :

sentence = sentence.replace(' ', '')

Zum Entfernen alle Leerzeichen (Leerzeichen, Tabulator, Zeilenumbruch usw.) können Sie mit split dann join :

sentence = ''.join(sentence.split())

oder einen regulären Ausdruck:

import re
pattern = re.compile(r'\s+')
sentence = re.sub(pattern, '', sentence)

Wenn Sie nur die Leerzeichen am Anfang und Ende entfernen wollen, können Sie strip :

sentence = sentence.strip()

Sie können auch Folgendes verwenden lstrip um Leerzeichen nur am Anfang der Zeichenkette zu entfernen, und rstrip um Leerzeichen am Ende der Zeichenkette zu entfernen.

160voto

Emil Stenström Punkte 11959

Eine Alternative ist die Verwendung regulärer Ausdrücke und die Übereinstimmung mit diese seltsamen Leerzeichen auch. Hier sind einige Beispiele:

Entfernt ALLE Leerzeichen in einer Zeichenkette, auch zwischen Wörtern:

import re
sentence = re.sub(r"\s+", "", sentence, flags=re.UNICODE)

Leerzeichen am BEGINN einer Zeichenkette entfernen:

import re
sentence = re.sub(r"^\s+", "", sentence, flags=re.UNICODE)

Leerzeichen am ENDE einer Zeichenkette entfernen:

import re
sentence = re.sub(r"\s+$", "", sentence, flags=re.UNICODE)

Entfernt Leerzeichen sowohl am ANFANG als auch am ENDE einer Zeichenkette:

import re
sentence = re.sub("^\s+|\s+$", "", sentence, flags=re.UNICODE)

Entfernen Sie NUR DUPLIZIERTE Leerzeichen:

import re
sentence = " ".join(re.split("\s+", sentence, flags=re.UNICODE))

(Alle Beispiele funktionieren sowohl mit Python 2 als auch mit Python 3)

65voto

MaK Punkte 1528

"Whitespace" umfasst Leerzeichen, Tabulatoren und CRLF . Also eine elegante und Einzeiler String-Funktion, die wir verwenden können, ist str.translate :

Python 3

' hello  apple '.translate(str.maketrans('', '', ' \n\t\r'))

OR wenn Sie gründlich sein wollen:

import string
' hello  apple'.translate(str.maketrans('', '', string.whitespace))

Python 2

' hello  apple'.translate(None, ' \n\t\r')

OR wenn Sie gründlich sein wollen:

import string
' hello  apple'.translate(None, string.whitespace)

20voto

wal-o-mat Punkte 6978

Um Leerzeichen am Anfang und Ende zu entfernen, verwenden Sie strip .

>> "  foo bar   ".strip()
"foo bar"

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