Seite 1 von 1

wie lässt es sich erklären?

Verfasst: Samstag 15. Juni 2013, 01:47
von blaxcycy
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')

Re: wie lässt es sich erklären?

Verfasst: Samstag 15. Juni 2013, 02:13
von cofi
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

Re: wie lässt es sich erklären?

Verfasst: Samstag 15. Juni 2013, 06:45
von Sirius3
@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«?

Re: wie lässt es sich erklären?

Verfasst: Samstag 15. Juni 2013, 08:41
von blaxcycy
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??

Re: wie lässt es sich erklären?

Verfasst: Samstag 15. Juni 2013, 08:46
von 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.

Re: wie lässt es sich erklären?

Verfasst: Samstag 15. Juni 2013, 09:10
von darktrym
Vielleicht denkt er ja, er bekommt alle Permutationen zurück.

Re: wie lässt es sich erklären?

Verfasst: Samstag 15. Juni 2013, 11:53
von blaxcycy
mich wundert es warum ich zwei ergebnisse aus einem string zurückbekomme die verschieden sind
bitte guckt euch den code an.

Re: wie lässt es sich erklären?

Verfasst: Samstag 15. Juni 2013, 12:39
von cofi
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.

Re: wie lässt es sich erklären?

Verfasst: Sonntag 16. Juni 2013, 16:02
von blaxcycy
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.