Seite 1 von 1

string

Verfasst: Mittwoch 25. Juni 2003, 16:07
von ertlpott
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

Verfasst: Mittwoch 25. Juni 2003, 16:18
von reggid
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?

Verfasst: Mittwoch 25. Juni 2003, 16:20
von Milan
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

Verfasst: Mittwoch 25. Juni 2003, 16:24
von Milan
@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.

Verfasst: Mittwoch 25. Juni 2003, 17:32
von Voges
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