Erlaeuterung zu Beispielprogramm

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.
maxip
User
Beiträge: 61
Registriert: Dienstag 11. März 2008, 09:43

Erlaeuterung zu Beispielprogramm

Beitragvon maxip » Montag 17. März 2008, 15:51

Hi,

auf wiki.python.de gibs folgendes Code-Beispie:

Code: Alles auswählen

import urllib
import re

def get_links(url):
    # Verbindung öffnen
    fp = urllib.urlopen(url)
    # Daten auslesen
    html = fp.read()
    # Regex anwenden und alle Gruppen suchen
    links = re.findall('<a.*?href="((http|ftp)s?://.*?)".*?>(?uism)', html)
    # Liste so manipulieren, dass nur noch das erste Element zurückgegeben
    # wird (also die 1. Gruppe)
    return [group[0] for group in links]

# alle links ausgeben
for link in get_links('http://www.python.org'):
    print link


Was bedeutet nun diese Zeile:

Code: Alles auswählen

return [group[0] for group in links]


Vielen Dank

ciao
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 17. März 2008, 16:02

Das ist eine List Comprehension. Es wird durch die Liste durchgegangen und eine neue Liste erstellt, jeweils mit dem Inhalt von ``group[0]``. Quasi die Kurzfassung einer ``for``-Schleife.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Donnerstag 20. März 2008, 10:35

Die letzte Zeile wäre übrigens überflüssig, wenn dort als regulärer Ausdruck `..."((?:http|ftp)s?://.*?)"...` stände.

Stefan

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]