Seite 1 von 1

pattern match

Verfasst: Sonntag 20. März 2011, 17:59
von dirtylion
hi,
Ich versuche schon seit ein paar stunden einen richtigen match auf ein wort zu erzielen.. leider ohne erfolg


elif result[count] == "[0-9]":
print datum[count], uhrzeit[count], heim[count], gast[count], result[count]
count = count + 1


es geht mir hier um "elif result[count] == "[0-9]":"
wenn die zahl in der varieable auf 0-9 match sollte er die funktion dadrunter ausführen.

ich bin bin von tcl zu python umgestiegen und wollte um hilfe bitten.
Danke

Re: pattern match

Verfasst: Sonntag 20. März 2011, 18:01
von deets
Zuerstmal: ist das eine wirkliche *Zahl*, oder ein String? Python nimmt das im Gegensatz zu TCL sehr genau - es ist ein himmelweiter unterschied, ob du "10" oder 10 schreibst.

Ich unterstelle mal ne zahl, dann waer's einfach nur:

Code: Alles auswählen


if 0 <= count < 10:
     ....


Re: pattern match

Verfasst: Sonntag 20. März 2011, 18:06
von dirtylion
es ist eigentlich ein fussball ergebnis

z.b 0:0

und ich wollte auf [0-9]:[0-9] matchen.

wenn ein ergebnis in der variable steht sollte er die funktion ausführen.


in tcl ging das einfach: if $result[count] == "[0-9]:[0-9]"

oder if $result[count] == ".*?:.*?"

Re: pattern match

Verfasst: Sonntag 20. März 2011, 18:32
von deets
Also, das sind dann denke ich Strings. Und die Syntax legt ein regulaeres Ausdrucks-Matching oder fnmatch nahe. Es saehe also so aus:

Code: Alles auswählen

>>> import re
>>> ergebnis = "0:3"
>>> re.match("[0-9]+:[0-9]+",ergebnis)
<_sre.SRE_Match object at 0xc7d78>
Ich bin aber ehrlich gesagt nicht davon ueberzeugt, dass das wirklich geschickt ist. Denn ein Fussballergebnis ist ja was numerisches.

Es sollte also stattdessen zB ein Tupel sein:

Code: Alles auswählen

>>> ergebnis = tuple(int(tor) for tor in "3:0".split(":"))
(3, 0)
Nochmal der Hinweis: in Python werden die verschiedenen Datentypen streng getrennt, und das ist auch gut so!

Woher kommen denn diese Ergebnisse, und warum genau muessen die matchen, oder auch nicht?

Re: pattern match

Verfasst: Sonntag 20. März 2011, 18:46
von dirtylion
die daten hole ich mir von einer fussballseite und baue daraus ein script für die dreambox (enigma2)
welches dann die aktuellen spieltag daten ausgibt :)
danke !

Re: pattern match

Verfasst: Sonntag 20. März 2011, 19:13
von deets
Ah, ok. Dann ist eine reine Text-Verarbeitung ja ausreichend, und du kannst das mit der Tupelei vergessen.