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.
Ich möchte einen Musterstring mit einem Text vergleichen. Wie erreiche ich, daß ich immer die jeweilige Position x im Text mit Position x im Muster vergleichen kann bevor ich mein Muster weiterrücke . Mit einer Schleifenverschachtelung geht das nicht, da dort ja alle Positionen verglichen werden. Kann man 2 Schleifen kombinieren??
Etwa so:
found = []
for i in len(text)-len(muster):
for j in len(muster):
if muster[j] != text[i+j]:
break
else: # for
found.append(str(i))
print "%s wurde %i mal gefunden an den Positionen %s" % (muster, len(found), ", ".join(found))
einfacher und effizienter gehts aber mit den Stringmethoden oder mit regular Expressons.
danke für die schnelle Antwort. Leider gibt es noch ein Problem. Wenn ich es so ausprobiere, bekomme ich die Fehlermeldung "Iteration over non-Sequence". Oder sollte ich die Schleife besser mit xrange basteln?
found = []
for i in xrange(len(text)-len(muster)+1):
for j in xrange(len(muster)):
if muster[j] != text[i+j]:
break
else: # for
found.append(str(i))
print "%s wurde %i mal gefunden an den Positionen %s" % (muster, len(found), ", ".join(found))
so gehts, man sollte den geposteten code doch immer auch selber testen
Super! Bin gut voran gekommen. Letzte Frage für heute. Wie kann ich mein Muster um mehr als einen Zähler am Text entlang verschieben? Kann ich i irgendwie hochsetzen? Habe schon probiert eine Variable einzuführen, die die Iteration bei Bedarf verändert, hat aber nicht geklappt.