str.strip([chars]) - vielleicht für andere Anfänger von Interesse

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

Mir fällt gerade leider auf, dass ich die strip()-Methode falsch eingeschätzt und falsch verwendet habe, auch wenn es bislang keine Fehler gab:

https://docs.python.org/3/library/stdty ... #str.strip

Ich zitiere mal aus der Dokumentation:
str.strip([chars])

Return a copy of the string with the leading and trailing characters removed. The chars argument is a string specifying the set of characters to be removed. If omitted or None, the chars argument defaults to removing whitespace. The chars argument is not a prefix or suffix; rather, all combinations of its values are stripped:
Mal einige Beispiele:

Code: Alles auswählen

>>> 'www.example.com'.strip('.com')
'www.example'
>>> 'www.example.com'.strip('cmowz.')
'example'
>>> 'www.example.com'.strip('ecmowz.')
'xampl'
Ich hatte bislang fälschlich angenommen, dass angegebene Elemente vorne und hinten gestrippt, also abgeschnitten werden, aber tatsächlich werden alle Kombinationen der angegbenen Zeichen abgeschnitten und zwar solange bis ein Zeichen auftritt, das nicht mehr in der Zeichenkette (chars argument) angegeben ist.

Ich poste das hier, weil ich ein anderes Verhalten erwartet hatte. Möglicherweise haben das andere auch falsch abgespeichert oder verstanden.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Gibts denn eine Programmiersprache wo das anders gehandelt wird?
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

Ich kenne wirklich gut und vertieft nur Python.
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@darktrym: in vielen Sprachen gibt es standardmäßig eben nur Methoden um Leerraum (Space, Tab, Newline) zu entfernen, aber da ist die Reihenfolge und Anzahl auch egal.

Bei Perl kann man das explizit angeben:
[codebox=perl file=Unbenannt.pl]
$str =~ s/(^\s+|\s+$)//;
$str =~ s/(^[abc]+|[abc]+$)//; # beliebige Reihenfolge
$str =~ s/(^abc|abc$)//; # feste Reihenfolge
[/code]
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Ok, ich kenne Delphi und C# und da ist es genauso wie in Python. Ich kenne praktisch keine Sprache die pixewakb Interpretation unterstützt.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

darktrym hat geschrieben:Ok, ich kenne Delphi und C# und da ist es genauso wie in Python. Ich kenne praktisch keine Sprache die pixewakb Interpretation unterstützt.
Es geht mir hier nicht um meine Interpretation, sondern um ein Missverständnis beim Lernen der Sprache. Ich habe die Funktion missverstanden und lange missverstanden genutzt. Es fiel mir erst dieser Tage auf, als ich es wieder nutzte, mit dem Ergebnis nicht zurecht kam und in die Dokumentation guckte. Ich hatte ursprünglich vermutet, dass sich Michael Weigend missverständlich ausgedrückt hatte, nach dessen Buch ich Python gelernt habe, aber die Fehlinterpretation ist tatsächlich auf meinem Mist gewachsen. :oops:

Ich habe es hier gepostet, möglicherweise waren sich andere Anfänger - als solcher möchte ich mich hier mal bezeichnen - der Inplementation auch noch nicht voll bewusst. :cry:
Antworten