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.