Warum funktioniert die Funktion strip() unter Python 2.2 nic

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
2bock_

Dienstag 23. September 2003, 14:11

Ich habe zur Zeit Python 2.2.2 auf dem System und entgegen einiger Bücher und Meldungen aus diversen Foren funktioniert bei mir die Funktion strip() nicht. Klar ich hab an den import der Klasse String usw. gedacht.

Ich hab das Problem auf eine sehr unschöne Art und WEise gelöst. Aber mich wurmt es halt immer noch, warum strip() nicht funktioniert.

Danke schon mal für die aufklärenden Antworten von euch.

2bock :evil:
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Dienstag 23. September 2003, 14:24

gib mal bitte Codebeispiele und deren Ausgabe an, damit man sich das mal näher anschauen kann... Aus dem Hilfetext geht ja hervor, dass das 2. Argument erst später dazukam, aber ich (wir) wissen ja nicht wie du strip benutzen willst.
python.org Documentation hat geschrieben: strip(s, [chars])
Return a copy of the string with leading and trailing characters removed. If chars is omitted or None, whitespace characters are removed. If given and not None, chars must be a string; the characters in the string will be stripped from the both ends of the string this method is called on. Changed in version 2.2.3: The chars parameter was added. The chars parameter cannot be passed in earlier 2.2 versions.
2bock_

Dienstag 23. September 2003, 16:11

>>> import string
>>> test = 'bla bla bla bla bla bla bla'
>>> test.strip(test,' ')
Traceback (most recent call last):
File "<pyshell#2>", line 1, in ?
test.strip(test,' ')
TypeError: strip() takes at most 1 argument (2 given)
>>>

Hier ein kleines Codebeispiel.
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Dienstag 23. September 2003, 16:19

Hallo!
2bock_ hat geschrieben:>>> test.strip(test,' ')
Das kannst Du aber so nirgends gelesen haben.

Es geht entweder so (alter Stil):
import string
test = string.strip(test,' ')


oder so (neuer Stil):
test = test.strip(' ')

Jan
2bock_

Mittwoch 24. September 2003, 08:24

>>> import string
>>> test = 'la la la la la la la la'
>>> test=test.strip(' ')
>>> print test
la la la la la la la la
>>>
>>> test = string.strip(test,' ')
>>> print test
la la la la la la la la
>>>

ich habe es nocheinmal ausprobiert ganz nach Deinen Anregungen Jan.
Ich habe beide Versionen ausprobiert und das sind die Resultate. Bitte sag mir das ich nen Flüchtigkeitsfehler habe. Ich verstehe nämlich mittlerweile nicht mehr Warum das anscheinend nur bei mir ncith funktioniert.

Trotzdem Danke für die bisherigen Hilfen.

2bock
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Mittwoch 24. September 2003, 08:53

Hallo!
2bock_ hat geschrieben: Ich habe beide Versionen ausprobiert und das sind die Resultate. Bitte sag mir das ich nen Flüchtigkeitsfehler habe.
Wie war der Spruch? Der Computer macht nicht das, was man will, sondern das was man ihm sagt. ;-)

Anscheinend willst Du die Leerzeichen inmitten des Strings löschen. strip() löscht aber nur "leading and trailing" Zeichen. Entweder Du nimmst string.replace() oder, falls Du eine Zeichenmenge hast, string.translate(). Ein Beispiel für Letzteres, da das Wie vielleicht nicht so offensichtlich ist:
>>> test = "ABCD"
>>> print test.translate(string.maketrans("",""),"AC")
BD
>>>


Ein regulärer Ausdruck ginge auch, wäre aber hier "überqualifiziert".

Jan
2bock_

Mittwoch 24. September 2003, 09:07

Danke Hans. Wie oben zu lesen, bin ich positiv überrascht. Warum steht eigentlich so was gutes nicht in meinen Büchern?

Egal trozdem herzlichen Dank.

2bock
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Mittwoch 24. September 2003, 10:41

Hallo,

um alle Whitespaces aus einem String zu löschen oder zu ersetzten kann mans auch so machen:

Code: Alles auswählen

>>> test = "bla bla bla bla"
>>> print "".join(test.split())
blablablabla

>>> test2 = "bla bla\nbla\tbla"
>>> print test2
bla bla
bla     bla

>>> print "".join(test2.split())
blablablabla
Gruß

Dookie
Antworten