Seite 1 von 1
re.sub
Verfasst: Freitag 12. September 2008, 10:12
von nemomuk
Hallo,
ich will mit re.sub in einem String nur das erste Element ersetzen.
zB:
Code: Alles auswählen
url = http://www.bsp.com/www.php
regexp_www = re.compile('www[\.]', re.I)
if re.match(regexp_www, url[7:11]):
re.sub(regexp_www, '', url)
Damit will ich bei vorhandenem www das www entfernen, eben nur das vorangestellte und nicht ein evtl. in der restl. url Vorkommendes... Bei diesem Beispiel erhalte ich ja
http://bsp.com/php und nicht
http://bsp.com/www.php
Danke!
MfG
Verfasst: Freitag 12. September 2008, 10:35
von lunar
Du solltest dir die Doku zum re-Modul nochmal durchlesen und lernen, wie man in Strings escaped!
Code: Alles auswählen
import re
from urlparse import urlsplit, urlunsplit
url = urlsplit('http://www.example.com/www.php')
netloc = re.sub(r'^www\.', '', url.netloc, re.I)
print urlunsplit((url.scheme, netloc, url.url, url.query, url.fragment))
Verfasst: Freitag 12. September 2008, 10:41
von BlackJack
Das versagt natürlich bei solchen URLs: '
http://name:secret@www.bsp.com/www.php'. Aber irgendwas ist ja immer.

Verfasst: Freitag 12. September 2008, 13:27
von nemomuk
danke für die Hilfe...
eine Frage: der Unterschied zwischen netloc und hostname bei urlparse...
Konnte bisher keinen Unterschied feststellen...
Re: re.sub
Verfasst: Samstag 13. September 2008, 08:33
von sma
SchneiderWeisse hat geschrieben:ich will mit re.sub in einem String nur das erste Element ersetzen.
Der dritte (optionale) Parameter von `sub` definiert, wie oft ersetzt wird.
Stefan
Verfasst: Samstag 13. September 2008, 11:25
von Y0Gi
SchneiderWeisse hat geschrieben:eine Frage: der Unterschied zwischen netloc und hostname bei urlparse...
Konnte bisher keinen Unterschied feststellen...
Ich vermute, dass netloc "user:password@hostname" umfasst.