Ich frage mich sowieso, wofür man strip() mit mehr als einem Zeichen verwendet. Die Ausnahme ist Whitespace, aber das ist ja sowieso die Standardeinstellung, wenn man kein Argument übergibt. Interessant dass dieses Verhalten anscheinend auch bei der Übergabe von anderen Zeichen erwartet wird. Also dass strip() demnach immer Whitespace von den Rändern entfernen würde und dann noch weitere Zeichen in Betracht zieht. Okay, könnte man so implementieren, ist aber halt nicht der Fall.
Das gewünschte Verhalten würde man so bekommen:
Ein strip() mit "Whitespace-Schalter" könnte so aussehen:
Code: Alles auswählen
def strip(string, chars=None, drop_whitespace=True):
if drop_whitespace:
string = string.strip()
if chars is not None:
return string.strip(chars)
return string
Wobei ich diese Funktion nicht wirklich schreiben würde, sondern dann auf das oben gezeigte doppelte strip() zurückgreifen würde, auch wenn es nicht ganz so elegant aussieht.