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

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
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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

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
Antworten