5 Stimmen

str.strip() seltsames Verhalten

>>> t1 = "abcd.org.gz"
>>> t1
'abcd.org.gz'
>>> t1.strip("g")
'abcd.org.gz'
>>> t1.strip("gz")
'abcd.org.'
>>> t1.strip(".gz")
'abcd.or'

Warum ist die 'g' de '.org' weg?

10voto

Deniz Dogan Punkte 24823

strip(".gz") entfernt eines der Zeichen . , g y z vom Anfang und Ende der Zeichenkette.

9voto

kennytm Punkte 488916

x.strip(y) werden alle Zeichen entfernt, die in y von Anfang und Ende der x .

Das bedeutet

'foo42'.strip('1234567890') == 'foo'

weil '4' y '2' beide erscheinen in '1234567890' .


使用方法 os.path.splitext wenn Sie die Dateierweiterung entfernen möchten.

>>> import os.path
>>> t1 = "abcd.org.gz"
>>> os.path.splitext(t1)
('abcd.org', '.gz')

5voto

Saurav Sahu Punkte 11267

En Python 3.9 gibt es zwei neue String-Methoden .removeprefix() y .removesuffix() um den Anfang bzw. das Ende einer Zeichenkette zu entfernen. Zum Glück machen die Methodennamen diesmal deutlich, was diese Methoden bewirken sollen.

>>> print (sys.version)
3.9.0 
>>> t1 = "abcd.org.gz"
>>> t1.removesuffix('gz')
'abcd.org.'
>>> t1
'abcd.org.gz'
>>> t1.removesuffix('gz').removesuffix('.gz')
'abcd.org.'     # No unexpected effect from last removesuffix call

1voto

Will McCutchen Punkte 12907

Das Argument, das der strip ist eine Menge von zu entfernenden Zeichen, keine Teilzeichenkette. Aus den Unterlagen :

Das Argument chars ist eine Zeichenkette, die die Menge der zu entfernenden Zeichen angibt.

1voto

Richard Punkte 14088

Soweit ich weiß, entfernt strip nur vom Anfang oder Ende einer Zeichenkette. Wenn Sie die gesamte Zeichenfolge entfernen möchten, verwenden Sie replace.

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