Klasse mehrfache ausführung
Verfasst: Freitag 17. Januar 2014, 12:43
Hallo miteinander,
ich habe zurzeit folgende Klasse (etwas vereinfacht), die in einem grossen Text-File nach Vorkommen von "CARD" sucht, das von "Test" oder "Tests" + einem PRF gefolgt wird. Das Wort "Test" oder "Tests" soll dann in "test" verändert werden. Der Code und die Klasse funktionieren:
Wenn ich nun aber einen zweiten Fall hinzufüge, also schlussendlich sowas habe:
Dann wird nur der letzte Befehl ausgeführt, d.h. auch wenn es Vorkommen von " CARD + Test + PRF" hat, es werden nur die Vorkommen " NN + Test + PRF" verändert.
Wie kann ich den Code ändern, dass beide Fälle berücksichtigt werden und dass beide Fälle ausgeführt werden?
Vielen Dank,
Marcel
ich habe zurzeit folgende Klasse (etwas vereinfacht), die in einem grossen Text-File nach Vorkommen von "CARD" sucht, das von "Test" oder "Tests" + einem PRF gefolgt wird. Das Wort "Test" oder "Tests" soll dann in "test" verändert werden. Der Code und die Klasse funktionieren:
Code: Alles auswählen
class Test(object):
def __init__(self):
self.NEs = Event(lambda w: getattr(w, "text", None), [u"Test", u"Tests"], maxdist=1, finevent=True)
self.PRF = Event(lambda w: getattr(w, "pos", None), [u"PRF"], maxdist=2, finevent=True)
self.CARD = Event(lambda w: w.get('pos', None), [u"CARD"], next_ev=[self.NEs], active_begin=True)
self.pat = PoSPattern([self.CARD, self.NEs, self.PRF], self.NEPRF, "de")
def NEPRF(self, resdct):
dct[self.NEs].attrib['number'] = "2"
dct[self.NEs].attrib['pos'] = "VV"
dct[self.NEs].text = "test"
def pattern(self):
return self.pat
Code: Alles auswählen
class Test(object):
def __init__(self):
self.NEs = Event(lambda w: getattr(w, "text", None), [u"Test", u"Tests"], maxdist=1, finevent=True)
self.PRF = Event(lambda w: getattr(w, "pos", None), [u"PRF"], maxdist=2, finevent=True)
self.CARD = Event(lambda w: w.get('pos', None), [u"CARD"], next_ev=[self.NEs], active_begin=True)
self.pat = PoSPattern([self.CARD, self.NEs, self.PRF], self.NEPRF, "de")
self.NN = Event(lambda w: w.get('pos', None), [u"NN"], next_ev=[self.NEs], active_begin=True)
self.pat = PoSPattern([self.NN, self.NEs, self.PRF], self.NEPRF, "de")
def NEPRF(self, resdct):
dct[self.NEs].attrib['number'] = "2"
dct[self.NEs].attrib['pos'] = "VV"
dct[self.NEs].text = "test"
def pattern(self):
return self.pat
Wie kann ich den Code ändern, dass beide Fälle berücksichtigt werden und dass beide Fälle ausgeführt werden?
Vielen Dank,
Marcel