Seite 1 von 1

Listen und Reguläre Ausdrücke

Verfasst: Samstag 26. August 2006, 00:37
von thonix
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

Verfasst: Samstag 26. August 2006, 05:35
von mawe
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

Verfasst: Samstag 26. August 2006, 18:07
von thonix
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

Verfasst: Samstag 26. August 2006, 18:48
von gerold
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
:-)

Verfasst: Samstag 26. August 2006, 18:54
von gerold

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

Verfasst: Samstag 26. August 2006, 18:55
von thonix
Vielen Dank :-)