Bei dieser Frage habe ich gerade mit Kollegen von der Arbeit über das Strippen für 3 Minuten gesprochen. Für alle anderen, die auf halbem Weg mitmachen, hätten sie gedacht, wir wären alle ein bisschen Nachtjobs.
Whitecat
Antworten:
1736
Nur ein Leerzeichen oder alle aufeinander folgenden Leerzeichen? Wenn die zweite, dann haben Zeichenfolgen bereits eine .strip()Methode:
>>>' Hello '.strip()'Hello'>>>' Hello'.strip()'Hello'>>>'Bob has a cat'.strip()'Bob has a cat'>>>' Hello '.strip()# ALL consecutive spaces at both ends removed'Hello'
Wenn Sie jedoch nur ein Leerzeichen entfernen müssen, können Sie dies tun mit:
def strip_one_space(s):if s.endswith(" "): s = s[:-1]if s.startswith(" "): s = s[1:]return s>>> strip_one_space(" Hello ")' Hello'
Beachten Sie auch, dass auch str.strip()andere Leerzeichen entfernt werden (z. B. Tabulatoren und Zeilenumbrüche). Um nur Leerzeichen zu entfernen, können Sie das zu entfernende Zeichen als Argument angeben strip, z.
Wenn Sie die Strip-Funktion benötigen, zum Beispiel eine Map-Funktion, können Sie über str.strip () darauf zugreifen, wie auf map (str.strip, collection_of_s)
Ward
1
Gibt es eine Möglichkeit, nur die Leerzeichen an den Enden zu kürzen?
Nikhil Girraj
2
@killthrush Danke für den Hinweis, aber ich denke du meintest die rstrip()Funktion. :-)
Nikhil Girraj
14
Manchmal fühle ich mich wie absichtlich Python die gut angenommen und aussagekräftige Namen vermeidet , dass die überwiegende Mehrheit der Sprachen verwenden , um „einzigartig“ und „anders“ zu sein - stripstatt trim, isinstancestatt instanceof, liststatt array, etc, etc. Warum nicht einfach Gebrauch die Namen, mit denen jeder vertraut ist? Meine Güte: P
Gershom
3
@GershomMaes in diesem stripFall stimme ich voll und ganz zu, aber eine Liste unterscheidet sich völlig von einem Array.
JFA
262
Wie in den obigen Antworten ausgeführt
myString.strip()
entfernt alle führenden und nachfolgenden Leerzeichen wie \ n, \ r, \ t, \ f, Leerzeichen.
Verwenden Sie für mehr Flexibilität Folgendes
Entfernt nur führende Leerzeichen:myString.lstrip()
Entfernt nur nachgestellte Leerzeichen:myString.rstrip()
Dieser Beitrag enthält nur Code und erklärt nicht, was die Funktion tut. Entfernt es führende oder nachfolgende Leerzeichen oder beides? Entfernt es nur Leerzeichen oder jede Art von Leerzeichen? Können Sie dafür sorgen, dass nur Leerzeichen entfernt werden, oder gibt es eine andere Funktion, um dies zu tun? Wenn sowohl führende als auch nachfolgende Leerzeichen entfernt werden, können Sie dann nur eine der beiden entfernen, oder gibt es (eine) andere Funktion (en), um die Aufgabe zu erledigen? myString.strip()beantwortet keine der Fragen, die ich gestellt habe.
EKons
8
Um fair zu sein, hat OP speziell nach einer Methode gefragt, mit der führende und nachfolgende Leerzeichen aus einer Zeichenfolge entfernt werden. Gute Antwort auf mich
Denis Lins
21
Du willst strip ():
myphrases =[" Hello "," Hello","Hello ","Bob has a cat"]for phrase in myphrases:print phrase.strip()
Ich wollte die zu vielen Leerzeichen in einer Zeichenfolge entfernen (auch zwischen den Zeichenfolgen, nicht nur am Anfang oder Ende). Ich habe das gemacht, weil ich nicht weiß, wie ich es anders machen soll:
Wenn Sie die angegebene Anzahl von Leerzeichen von links und rechts kürzen möchten , können Sie dies tun:
def remove_outer_spaces(text, num_of_leading, num_of_trailing):
text = list(text)for i in range(num_of_leading):if text[i]==" ":
text[i]=""else:breakfor i in range(1, num_of_trailing+1):if text[-i]==" ":
text[-i]=""else:breakreturn''.join(text)
txt1 =" MY name is "print(remove_outer_spaces(txt1,1,1))# result is: " MY name is "print(remove_outer_spaces(txt1,2,3))# result is: " MY name is "print(remove_outer_spaces(txt1,6,8))# result is: "MY name is"
Wie entferne ich führende und nachfolgende Leerzeichen aus einer Zeichenfolge in Python?
Die folgende Lösung entfernt also führende und nachfolgende Leerzeichen sowie mittlere Leerzeichen. Zum Beispiel, wenn Sie eindeutige Zeichenfolgenwerte ohne mehrere Leerzeichen erhalten müssen.
>>> str_1 =' Hello World'>>>print(' '.join(str_1.split()))HelloWorld>>>>>>>>> str_2 =' Hello World'>>>print(' '.join(str_2.split()))HelloWorld>>>>>>>>> str_3 ='Hello World '>>>print(' '.join(str_3.split()))HelloWorld>>>>>>>>> str_4 ='Hello World '>>>print(' '.join(str_4.split()))HelloWorld>>>>>>>>> str_5 =' Hello World '>>>print(' '.join(str_5.split()))HelloWorld>>>>>>>>> str_6 =' Hello World '>>>print(' '.join(str_6.split()))HelloWorld>>>>>>>>> str_7 ='Hello World'>>>print(' '.join(str_7.split()))HelloWorld
Wie Sie sehen können, werden dadurch alle mehreren Leerzeichen in der Zeichenfolge entfernt (Ausgabe ist Hello Worldfür alle). Die Lage spielt keine Rolle. Aber wenn Sie wirklich führende und nachfolgende Leerzeichen benötigen, dann sind Sie hier genau richtig strip().
Antworten:
Nur ein Leerzeichen oder alle aufeinander folgenden Leerzeichen? Wenn die zweite, dann haben Zeichenfolgen bereits eine
.strip()
Methode:Wenn Sie jedoch nur ein Leerzeichen entfernen müssen, können Sie dies tun mit:
Beachten Sie auch, dass auch
str.strip()
andere Leerzeichen entfernt werden (z. B. Tabulatoren und Zeilenumbrüche). Um nur Leerzeichen zu entfernen, können Sie das zu entfernende Zeichen als Argument angebenstrip
, z.quelle
rstrip()
Funktion. :-)strip
statttrim
,isinstance
stattinstanceof
,list
stattarray
, etc, etc. Warum nicht einfach Gebrauch die Namen, mit denen jeder vertraut ist? Meine Güte: Pstrip
Fall stimme ich voll und ganz zu, aber eine Liste unterscheidet sich völlig von einem Array.Wie in den obigen Antworten ausgeführt
entfernt alle führenden und nachfolgenden Leerzeichen wie \ n, \ r, \ t, \ f, Leerzeichen.
Verwenden Sie für mehr Flexibilität Folgendes
myString.lstrip()
myString.rstrip()
myString.strip('\n')
odermyString.lstrip('\n\r')
odermyString.rstrip('\n\t')
so weiter.Weitere Details finden Sie in den Dokumenten
quelle
strip
ist auch nicht auf Leerzeichen beschränkt:quelle
Dadurch werden alle führenden und nachfolgenden Leerzeichen entfernt in
myString
:quelle
myString.strip()
beantwortet keine der Fragen, die ich gestellt habe.Du willst strip ():
quelle
Ich wollte die zu vielen Leerzeichen in einer Zeichenfolge entfernen (auch zwischen den Zeichenfolgen, nicht nur am Anfang oder Ende). Ich habe das gemacht, weil ich nicht weiß, wie ich es anders machen soll:
Dies ersetzt doppelte Leerzeichen in einem Leerzeichen, bis Sie keine doppelten Leerzeichen mehr haben
quelle
Ich konnte keine Lösung für das finden, wonach ich suchte, also habe ich einige benutzerdefinierte Funktionen erstellt. Sie können sie ausprobieren.
quelle
Wenn Sie die angegebene Anzahl von Leerzeichen von links und rechts kürzen möchten , können Sie dies tun:
quelle
Dies kann auch mit einem regulären Ausdruck erfolgen
quelle
Die folgende Lösung entfernt also führende und nachfolgende Leerzeichen sowie mittlere Leerzeichen. Zum Beispiel, wenn Sie eindeutige Zeichenfolgenwerte ohne mehrere Leerzeichen erhalten müssen.
Wie Sie sehen können, werden dadurch alle mehreren Leerzeichen in der Zeichenfolge entfernt (Ausgabe ist
Hello World
für alle). Die Lage spielt keine Rolle. Aber wenn Sie wirklich führende und nachfolgende Leerzeichen benötigen, dann sind Sie hier genau richtigstrip()
.quelle