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.
Gast

rfind mit Anzahl???

Beitragvon Gast » Samstag 29. Januar 2005, 20:19

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??
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 29. Januar 2005, 20:26

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 Modvoice
Gast

Beitragvon Gast » Samstag 29. Januar 2005, 20:41

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: 256
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

Beitragvon XT@ngel » Samstag 29. Januar 2005, 20:51

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])

Beitragvon mawe » Samstag 29. Januar 2005, 20:52

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

Beitragvon Gast » Samstag 29. Januar 2005, 21:01

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 29. Januar 2005, 21:07

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 Modvoice

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], egon11, MichaelR., Whitie