Listen und Reguläre Ausdrücke

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
thonix
User
Beiträge: 47
Registriert: Samstag 12. August 2006, 00:06

Hallo zusammen.

ich komm ned ganz klar mit den RE in kombi mit Listen.

Angenommen ich habe eine Liste mit folgenden werten ["abc", "asd1", "123", "2322", "4545" ]

Wie bekomme ich es schnell uns dauber hin alle Einträge die keine reinen Zahlen sind zu entfernen ?

Hat da veilleicht jemand einen vorschlag für mich ?

Danke schon mal

Thonix
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Code: Alles auswählen

>>> lst = ["abc", "asd1", "123", "2322", "4545"]
>>> num = [item for item in lst if item.isdigit()]
['123', '2322', '4545']
Gruß, mawe
thonix
User
Beiträge: 47
Registriert: Samstag 12. August 2006, 00:06

Vielen Dank für die Antwort.

rein interessehalber. Wie würde es den aussehen wenn ich nach einem Re prüfen wollte z.b. [0-9]{2,5}[a-z]*[0-9] "filtern" wollte ?

Thonix
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

thonix hat geschrieben:rein interessehalber. Wie würde es den aussehen wenn ich nach einem Re prüfen wollte
Hi Thonix!

Code: Alles auswählen

# funktioniert aber nur bei Ganzzahlen
import re

old_list = ["abc", "asd1", "123", "2322", "4545" ]
re_c = re.compile("^[0-9]+$")
new_list = []
for item in old_list:
    if re_c.match(item):
        new_list.append(item)

print new_list
Und das würde auch bei Fließkommazahlen funktionieren:

Code: Alles auswählen

# funktioniert auch bei Fließkommazahlen

old_list = ["abc", "asd1", "123.5656", "2322", "4545" ]

new_list = []
for item in old_list:
    try:
        dummy = float(item)
        new_list.append(item)
    except ValueError:
        pass

print new_list
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Code: Alles auswählen

# funktioniert auch bei Fliesskommazahlen
import re

old_list = ["abc", "asd1", "123.1234", "2322", "4545" ]
re_c = re.compile(r"^[0-9]+\.?[0-9]*$")
new_list = []
for item in old_list:
    if re_c.match(item):
        new_list.append(item)

print new_list
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
thonix
User
Beiträge: 47
Registriert: Samstag 12. August 2006, 00:06

Vielen Dank :-)
Antworten