Hi
2013/12/18 Torsten P.
Hallo Gruppe,
ich möchte in einem Text zählen, wieviele Zeichen von '#' oder '0' (XOR) nach einem Punkt folgen. Ich wollte dies mit re.search angehen. Wenn ich entweder auf '#' oder '0' prüfe klappts.
t1 = 'some text .000 more text' t2 = 'some text .### more text'
Falls das nur die Fälle sind die in Betracht kommen, würde ich da keine regex für nehmen. text.count('0') or text.count('#') Gruß Reimar
re.search('\.(0*)', t1).groups() >>> ('000',) re.search('\.(0*)', t2).groups() >>> ('',) re.search('\.(#*)', t1).groups() >>> ('',) re.search('\.(#*)', t2).groups() >>> ('###',)
Nun würde ich aber gerne statt zwei regex nur einen haben. Leider bin ich da nicht erfolgreich. Folgendes habe ich schon probiert:
re.search('\.(#*)|(0*)', t1).groups() > (None, '') re.search('\.(#*)|(0*)', t2).groups() > (None, '') re.search('\.(0*)|(#*)', t1).groups() > (None, '') re.search('\.(0*)|(#*)', t2).groups() > (None, '') re.search('\.(#|0)*', t1).groups() > ('0',) re.search('\.(#|0)*', t2).groups() > ('#',) re.search('\.(0|#)*', t1).groups() > ('0',) re.search('\.(0|#)*', t2).groups() > ('#',) re.search('\.(#*|0*)', t1).groups() > ('',) re.search('\.(#*|0*)', t2).groups() > ('###',) re.search('\.(0*|#*)', t1).groups() > ('000',) re.search('\.(0*|#*)', t2).groups() > ('',)
Einen Teilerfolg habe ich mit:
re.search('\.(?P<sign>0|[#])(?P<cnt>(?P=sign)*)', t1).groups() ('0', '00')
re.search('\.(?P<sign>0|[#])(?P<cnt>(?P=sign)*)', t2).groups()# ('#', '##')
Kann mir jemand sagen, wie das richtig sein muss bzw. wo mein Fehler ist?
Danke, Torsten
_______________________________________________ python-de maillist - python-de@python.org https://mail.python.org/mailman/listinfo/python-de