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