RegEx Problem, Dezimalzahlen

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
DocFisher
User
Beiträge: 50
Registriert: Donnerstag 29. November 2007, 21:04
Wohnort: Berlin
Kontaktdaten:

Hallo,

ich möchte von der EZB die tagesaktuellen Wechelkurse herunterladen und in einem Währungsrechner verwenden. Allerdings schaffe ich es nicht, mit einem RegEx die korrekten Kurse zu filtern. Hier ein kurzer Auszug aus dem Quelltext:

Code: Alles auswählen

def update_kurse():
    import urllib
    import re

    site = urllib.urlopen('http://www.ecb.eu/euro.html').read()

    date_liste = re.findall('(\d\d)\ (\w*)\ (\d{4})', site)[0]
    raw_kurse = re.findall('(.*)\ \((\w*).*(\d+\.\d+)', site)

    kursliste = [('Euro', 'EUR', '1.0')]
    kursdict = {'EUR':1.0}
    for i in raw_kurse:
        kursliste.append(i)
        kursdict[i[1]] = float(i[2])
    return kursliste, kursdict, date_liste
Es geht um die raw_kurse.
Meines Erachtens müsste der Audruck (\d+\.\d+) alle Dezimalzahlen korret erfassen. Aber statt 160.86 liefert er mir nur 0.86...

Sollte \d+ nicht ein- oder mehrmaliges Vorkommen einer Ziffer beschreiben? Und ist das Vorgehen nicht "gierig"?

Es ist schon spät, vielleicht stehe ich auch nur auf dem Schlauch. Hilft mir jemand runter?

Grüße und eine gute Nacht,

Doc
Benutzeravatar
Hobbes Hobson
User
Beiträge: 42
Registriert: Sonntag 9. Dezember 2007, 15:24
Wohnort: Bremen

Code: Alles auswählen

def update_kurse():
    import urllib
    import re

    site = urllib.urlopen('http://www.ecb.eu/euro.html').read()

    date_liste = re.findall('(\d\d)\ (\w*)\ (\d{4})', site)[0]
    raw_kurse = re.findall('(.*)\ \((\w*).*? = (\d+\.\d+)', site)
    print raw_kurse
    kursliste = [('Euro', 'EUR', '1.0')]
    kursdict = {'EUR':1.0}
    for i in raw_kurse:
        kursliste.append(i)
        kursdict[i[1]] = float(i[2])
    return kursliste, kursdict, date_liste

Es lag am .* Das hat deine Zahl mitgenommen ;)
DocFisher
User
Beiträge: 50
Registriert: Donnerstag 29. November 2007, 21:04
Wohnort: Berlin
Kontaktdaten:

Danke Hobbes,

you saved my day....
.... nope, night ;-)
Antworten