regular expression - finditer - iterator-problem

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
garz

hi,

ich hab hier ein "kleines" problem:

ich erstelle mir ein pattern mit re.compile, suche dann nach diesem pattern in einem string und speichere alle ergebnisse in einem iterator, da ich mit finditer gesucht habe. beim auswerten der suchergebnisse durchlaufe ich eine for-schleife. bei jedem durchgang benötige ich einen wert des nächsten elements des iterators, um ihn mit einem wert des aktuellen elements kombinieren zu können.

die frage ist nun, wie komme ich an das nächste element des iterators?

einfach mal ein .next() machen geht nicht, da dann die ordnung

findall ist keine lösung für mich, da ich an informationen des matchobject gelangen muss, ich bei findall aber nur eine liste zurück bekomme. nur der iterator von finditer gibt mir das matchobjekt eines jeden suchergebnisses.
BlackJack

Irgendwie endet Dein Satz mit 'Ordnung' ziemlich abrupt und unverständlich. ;-)

Kannst Du das Problem eventuell etwas umformulieren, so dass es auf folgendes Code-Stück passt?

Code: Alles auswählen

def foo(matches):
    try:
        it = iter(matches)
        current_match = it.next()
        for next_match in it:
            # Tu etwas mit current_match und next_match.
            current_match = next_match
        else:
            # Tu etwas wenn nur 1 match gefunden wurde.
    except StopIteration:
        # Tu etwas wenn keine matches gefunden wurden.
garz

Code: Alles auswählen

iter_result = pattern.finditer(spass)
for current_match in iter_result:
# Tu etwas mit current_match und current_match+1, also next_match.
das wars.

dass der eine satz nicht zu ende geht tut der dem verständnis keinen abbruch... hab den nur angefangen und dann ganz vergessen. =) aber in dem satz sollte es darum gehen, dass man in der schleife nicht einfach next machen kann, weil man dann beim nächsten element ist und wenn die for-schleife wieder von vorne beginnt, diese ja auch next() macht, man also immer ein element überspringen würde.
Antworten