re.findall gibt zu viele Werte aus
Verfasst: Donnerstag 24. November 2016, 09:17
Hallo zusammen,
ich arbeite gerade 'Automate the Boring Stuff with Python' durch und konnte bisher jedes Problem mehr oder minder selbsständig lösen. Dazu sei gesagt, dass ich nicht über mehr als das Schulbasiswissen aus dem Informatikunterricht verfüge und daher die nun folgende Frage möglicherweise lapidar erscheinen mag.
Mir bereitet gerade die Funktion re.findall etwas Kopfzerbrechen. Ich habe ein Regex erstellt, dass deutsche Telefonnummern erkennen soll. Mittels re.search funktioniert das auch wunderbar. Wende ich jedoch folgenden Code an
So bekomme ich folgendes Tuple ausgegeben:
(Edit): Jetzt passt auch die Ausgabe. Habe mit verschiedenen Nummern experimentiert und leider die Falsche Ausgabe gepostet.
Meine Frage ist jetzt, weshalb die Ziffern 3, 1, 7, 4 und 5 jeweils einzeln ausgegeben werden. Mir scheint als wenn für (\d)* jeweils die zuletzt gefundene Ziffer ausgegeben wird. Für mich sind dieses Werte jedoch überflüssig. Wie kann ich dies verhindern? Oder ist das so beabsichtigt?
P.S.: Ich hab schon die Suche bemüht. Gefunden habe ich schließlich nichts, was aber auch damit zusammenhängen mag, dass ich nicht wirklich weiß, wie ich meine Suchanfrage treffend formulieren sollte.
(Edit): Danke für das Ändern der Codeboxen.
Vielen Dank und viele Grüße
ich arbeite gerade 'Automate the Boring Stuff with Python' durch und konnte bisher jedes Problem mehr oder minder selbsständig lösen. Dazu sei gesagt, dass ich nicht über mehr als das Schulbasiswissen aus dem Informatikunterricht verfüge und daher die nun folgende Frage möglicherweise lapidar erscheinen mag.
Mir bereitet gerade die Funktion re.findall etwas Kopfzerbrechen. Ich habe ein Regex erstellt, dass deutsche Telefonnummern erkennen soll. Mittels re.search funktioniert das auch wunderbar. Wende ich jedoch folgenden Code an
Code: Alles auswählen
import re
phoneNumRegex = re.compile(r'(0(\d){2}(\d)*)-((\d){3}(\d)*)'
print(phoneNumRegex.findall('Privat: 05381-6370484 Geschäftlich 0157-24481634')So bekomme ich folgendes Tuple ausgegeben:
(Edit): Jetzt passt auch die Ausgabe. Habe mit verschiedenen Nummern experimentiert und leider die Falsche Ausgabe gepostet.
Code: Alles auswählen
[('05381', '3', '1', '6370484', '7', '4'), ('0157', '5', '7', '24481634', '4', '4')]P.S.: Ich hab schon die Suche bemüht. Gefunden habe ich schließlich nichts, was aber auch damit zusammenhängen mag, dass ich nicht wirklich weiß, wie ich meine Suchanfrage treffend formulieren sollte.
(Edit): Danke für das Ändern der Codeboxen.
Vielen Dank und viele Grüße