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

Listen und Reguläre Ausdrücke

Beitragvon thonix » Samstag 26. August 2006, 00:37

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])

Beitragvon mawe » Samstag 26. August 2006, 05:35

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

Beitragvon thonix » Samstag 26. August 2006, 18:07

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: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Samstag 26. August 2006, 18:48

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: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Samstag 26. August 2006, 18:54

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

Beitragvon thonix » Samstag 26. August 2006, 18:55

Vielen Dank :-)

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]