Seite 1 von 1

mustererkennung...

Verfasst: Mittwoch 19. Oktober 2005, 16:45
von chocostick
hi,

soll n pythonprog schreibn das zur mustererkennung(suchen in texten) dient.
den grund aufbau hab ich shcon mal, aber soll jetzt einmal noch das prog so erweitern, dass das prog jedes muster aus dem text findet und dies dann auch dem benutzer zeigt (also print oder return... weiß es net so genau)
es soll dann dein Tupel mit allen positionen liefern...

außerdem außerdem soll das programm ein muster "zensieren" also wenn in einem wort wie arschaks das wort arsch steht soll das programm eine 0 wiedergeben (wenn es nicht enthalten is eine 1) hoffe ihr könnt mir wenigstens n bissle helfen...

hier is mein fertiger code zu einfachen mustererkennung:

Code: Alles auswählen

def suche(text,muster):
textlaenge = len(text)
musterlaenge = len(muster)
for index in range(0,textlaenge-musterlaenge+1,1):
if text[index:(index + musterlaenge)] == muster:
return index
return -1
t = "ersagteabernichtsaber"
m = "aber"
print suche(t,m)
thx schon mal

Edit (Leonidas): Code in Python-Tags gesetzt. Einrücken werde ich aber nicht.

Verfasst: Mittwoch 19. Oktober 2005, 19:27
von Leonidas
Warum denn so umständlich?
Den Code sieht so aus:

Code: Alles auswählen

def suche(text,muster):
    textlaenge = len(text)
    musterlaenge = len(muster)
    for index in range(0,textlaenge-musterlaenge+1,1):
        if text[index:(index + musterlaenge)] == muster:
            return index
    return -1
    
t = "ersagteabernichtsaber"
m = "aber"
print suche(t,m)
Aber man braucht doch nur so viel:

Code: Alles auswählen

t = "ersagteabernichtsaber"
m = "aber"
print t.index(m)

Re: mustererkennung...

Verfasst: Mittwoch 19. Oktober 2005, 21:51
von BlackJack
Das sieht so verdammt nach Hausaufgabe aus.
chocostick hat geschrieben:soll n pythonprog schreibn das zur mustererkennung(suchen in texten) dient.
den grund aufbau hab ich shcon mal, aber soll jetzt einmal noch das prog so erweitern, dass das prog jedes muster aus dem text findet und dies dann auch dem benutzer zeigt (also print oder return... weiß es net so genau)
Wenn Du es dem Benutzer zeigen sollst dann musst Du auf jeden Fall irgendwo ``print`` verwenden.
es soll dann dein Tupel mit allen positionen liefern...
Da würde ich eher eine Liste mit Positionen als Rückgabewert empfehlen.
außerdem außerdem soll das programm ein muster "zensieren" also wenn in einem wort wie arschaks das wort arsch steht soll das programm eine 0 wiedergeben (wenn es nicht enthalten is eine 1) hoffe ihr könnt mir wenigstens n bissle helfen...
Das allgemein hinzubekommen dürfte schwer sein weil der Computer ja nicht weiss was die "bösen" Worte sind. ;-)

@Leonidas: Das ist vielleicht so "umständlich" weil die in der Hausaufgabe lernen sollen wie man das Problem selbst löst. Das mit `re.findall()` zu lösen dürfte dann keine Punkte bringen. ;-)

Re: mustererkennung...

Verfasst: Donnerstag 20. Oktober 2005, 15:14
von Leonidas
BlackJack hat geschrieben:
außerdem außerdem soll das programm ein muster "zensieren" also wenn in einem wort wie arschaks das wort arsch steht soll das programm eine 0 wiedergeben (wenn es nicht enthalten is eine 1) hoffe ihr könnt mir wenigstens n bissle helfen...
Das allgemein hinzubekommen dürfte schwer sein weil der Computer ja nicht weiss was die "bösen" Worte sind. ;-)
Außerdem würde ich statt 0 und 1 die Werte True und False empfehlen, da sie meiner Meinung nach aussagekräftiger sind.