string

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
ertlpott
User
Beiträge: 44
Registriert: Montag 14. April 2003, 16:05

Gibt es Eigentlich eine Funktion im string Modul, die mir, wenn ein Wort oder Buchstabe in einem String öfters vorkommt, eine Liste von allen Indexen der Stellen wo der gesuchte String vorkommt?

cu

Simon
reggid
User
Beiträge: 120
Registriert: Dienstag 8. Oktober 2002, 19:04
Wohnort: Dinslaken
Kontaktdaten:

Also bei schnellen durchgucken des String-Moduls hab ich auch nichts gefunden!
Ich hab noch eine Frage, irgendwie verstehe ich deine Frage aber auch nicht ganz
Also du hast ein String s="Ich bin der String" und da soll mit einer Funktion eine Liste erstelt werden, wie oft das Wort 'String' in dem String s vorkommt, also quasi liste=["11,17"], das wäre dr Bereich des Wortes String?
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Hi, einfach nachschauen ;). Soweit ich weiß, nicht. Du kannst mit string.find zwar die Position der ersten Übereinstimmung finden, aber nicht mehr. Also muss man sich selber was definieren:

Code: Alles auswählen

def match (text,muster):
    if muster == "":
        return []
    tl = len(text)
    ml = len(muster)
    erg=[]
    for i in xrange(0,tl-ml+1,1):
        if text[i: (i + ml)] == muster: erg.append(i)
    return erg
Zuletzt geändert von Milan am Mittwoch 25. Juni 2003, 16:25, insgesamt 1-mal geändert.
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

@Reggid, das dürfte das sein, was ich jedenfalls auch verstanden hab und man allgemein pattern matching nennt ;). Allerdings wird dabei nur der Startindex angegeben und das ohne ", sonst wäre die Angabe ja wieder ein String statt ein Index.
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Man kann bei string.find() angeben, ab welcher Position gesucht werden soll.

Code: Alles auswählen

fisch = "Fischer Fritz fischt frische Fische, frische Fische fischt Fischer Fritz!"
pos = -1
while 1:
    pos = fisch.find("sch",pos+1)
    if pos < 0: break
    print pos,
Ausgabe: 2 16 24 31 40 47 54 61
Jan
Antworten