wie lässt es sich erklären?

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
blaxcycy
User
Beiträge: 4
Registriert: Samstag 15. Juni 2013, 01:29

Guten Morgen Python-Coder,
nachdem ich die biblothek re importiert habe und damit auf die variable e die methode search referenziert habe, habe ich in eine gruppe noch eine gruppe erstellt r"(?P<text>([a-z]*))".
dann habe ich damit meinen text gesucht.
e = re.search(r"(?P<text>([a-z]*))","abczshdgf")
nachdem ich das gemacht habe, habe ich mit der methode groups nach meiner gruppe gesucht.
statt das der tuppel ("abczshdgf",) kommt, kommt stattdessen der tuppel ("abczshdgf","abczshdgf")
also dass doppelte:
wie lässt sich dieses "Phänomen" erklären ?
so sieht der code aus

>>> e = re.search(r"(?P<text>([a-z]*))","abzhdfghd")
>>> e
<_sre.SRE_Match object at 0x7f3dfc5441c8>
>>> e.groups()
('abzhdfghd', 'abzhdfghd')
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Willkommen im Forum!

Bitte benutze bei Code zukuenftig die Python- oder zumindest die Code-Tags.

Zu deinem Problem: Du solltest lesen, was die `group`-Methode eines Match Objektes zurueckgibt: http://docs.python.org/2/library/re.htm ... ject.group
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@blaxcycy: »groups« gibt sowohl Guppen mit als auch ohne Namen zurück, halt in der Reihenfolge, wie sie im Ausdruck vorkommen. Vielleicht suchst Du »groupdict«?
blaxcycy
User
Beiträge: 4
Registriert: Samstag 15. Juni 2013, 01:29

ja aber mein problem ist warum genau zwei objekte zurück gegeben werden und das interessante was ich noch rausgefunden habe ist das.

Code: Alles auswählen

>>> import re
>>> e = re.search(r"(?P<text>([a-z]*)[0-9]*)","sakjhf3")
>>> e.groups()
('sakjhf3', 'sakjhf')
>>> 
und wie lässt sich das jetzt erklrären??
BlackJack

@blaxcycy: Ich verstehe die Frage irgendwie nicht. Du hast im regulären Ausdruck genau zwei Gruppen und bekommst von `groups()` genau zwei Ergebnisse. Und das verwundert Dich jetzt‽ Wie viele Ergebnisse hättest Du denn bei zwei Gruppen im Ausdruck erwartet?

Das lässt sich so erklären, dass dieses Verhalten genau so definiert und dokumentiert ist.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Vielleicht denkt er ja, er bekommt alle Permutationen zurück.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
blaxcycy
User
Beiträge: 4
Registriert: Samstag 15. Juni 2013, 01:29

mich wundert es warum ich zwei ergebnisse aus einem string zurückbekomme die verschieden sind
bitte guckt euch den code an.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

blaxcycy hat geschrieben:bitte guckt euch den code an.
Bitte schau dir die Dokumentation an.

Wie BlackJack schon sagte: Du hast 2 Gruppen. Gruppe 0 ist der gesamte Ausdruck und Gruppe 1 die, die du explizit erstellt hast. Wenn die gleich sind, bekommst du natuerlich auch 2 gleiche Gruppenergebnisse.
blaxcycy
User
Beiträge: 4
Registriert: Samstag 15. Juni 2013, 01:29

cofi hat geschrieben:
blaxcycy hat geschrieben:bitte guckt euch den code an.
Bitte schau dir die Dokumentation an.

Wie BlackJack schon sagte: Du hast 2 Gruppen. Gruppe 0 ist der gesamte Ausdruck und Gruppe 1 die, die du explizit erstellt hast. Wenn die gleich sind, bekommst du natuerlich auch 2 gleiche Gruppenergebnisse.

danke cofi habe es jetzt verstanden.
Antworten