pattern match

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
dirtylion
User
Beiträge: 19
Registriert: Sonntag 13. März 2011, 13:33

Sonntag 20. März 2011, 17:59

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
deets

Sonntag 20. März 2011, 18:01

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:
     ....

dirtylion
User
Beiträge: 19
Registriert: Sonntag 13. März 2011, 13:33

Sonntag 20. März 2011, 18:06

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] == ".*?:.*?"
deets

Sonntag 20. März 2011, 18:32

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?
dirtylion
User
Beiträge: 19
Registriert: Sonntag 13. März 2011, 13:33

Sonntag 20. März 2011, 18:46

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 !
deets

Sonntag 20. März 2011, 19:13

Ah, ok. Dann ist eine reine Text-Verarbeitung ja ausreichend, und du kannst das mit der Tupelei vergessen.
Antworten