rfind mit Anzahl???

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
Gast

Hallo allerseits
ich versuche gerade folgendes:

der String:
str = abcde/efgh/ijkl/mnop
sollte zu
abcde/efgh
konvertiert werden.

ich wollte es so machen:
erg = string.rfind(str, '/',2)

habe aber festgestellt dass es völlig egal ist ob man eine 2 oder eine 3 oder eine 4 für rfind als optionalen Parameter hinten angibt. Es nimmt immer default 1.

Gibt es denn keinen Aufruf mit diesem optionalen Paramter??
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich hätte es ja so gemacht:

Code: Alles auswählen

st = "abcde/efgh/ijkl/mnop"
# nicht str, da das ein builtin ist
st.rsplit('/', 2)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Gast

Danke fürdeine schnelle Antwort Leonidas...

leider kann ich deine Lösung nicht nachmachen..
bei mir kommt die Fehlermeldung:

Code: Alles auswählen

>>> st = "ab/cd/ef/gh"
>>> st.rsplit('/',2)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AttributeError: 'str' object has no attribute 'rsplit'
Du meinet so splitten und dann aus der split-liste den substring rusholen???

Edit (Leonidas): Code in Python Tags gesetzt
XT@ngel
User
Beiträge: 255
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

Welche Python Version hast Du?
evtl. musst du schreiben

Code: Alles auswählen

import string 
st = "abcde/efgh/ijkl/mnop"
new_st = string.rsplit(st, '/', 2)
Edit.
Zur kurzen Erklärung wieso:
http://docs.python.org/lib/node107.html
Ich glaub seit Version 2.2 sind alle im Modul string enthaltene Funktionen, Methoden des Typs string.
Und rsplit gibts sowieso erst ab Version 2.4
Zuletzt geändert von XT@ngel am Samstag 29. Januar 2005, 20:59, insgesamt 5-mal geändert.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Hier eine ganz einfache Lösung :wink:

Code: Alles auswählen

s = 'abcde/efgh/ijkl/mnop'
'/'.join(s.split('/')[0:2])
Gruß, mawe
Gast

Danke euch:
@ Leonidas...
ja es liegt an meiner Version.
BIn erst bei 2.3.4 :?

Mit der ./. join Lösung gehts auf alle Fälle ;)

Danke
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Anonymous hat geschrieben:ja es liegt an meiner Version.
BIn erst bei 2.3.4 :?
Updaten, marsch, marsch! *g*
mawe hat geschrieben:Hier eine ganz einfache Lösung :wink:
Vor allem einfach :lol:
Damit bist du fast schon bei meinen lambda/LC Konstrukten, hehe.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten