Hi,
vorab, mit Python hatte ich noch nie was am Hut. Ich müsste nur schnell einen String einkürzen damit die Darstellung wieder passt. Der Hauptschuldige ist leider nicht erreichbar
Es geht um das einkürzen einer Internetadresse. Letztendlich soll diese ganz normal aussehen:
String: http://www.meinedomain.de?attr=1&...
Ziel: http://www.meinedomain.de
genau gesagt möchte ich alles was nach der .tld steht weg haben...
In PHP wüsst ich ja wies geht
Bin für alle Tipps dankbar
Python string bei bestimmten Zeichen kürzen?
Dafür gibt es das Modul ``urlparse`` bzw. ``urllib.parse`` ab Python 3.
http://docs.python.org/library/urlparse.html
http://docs.python.org/library/urlparse.html
- mkesper
- User
- Beiträge: 919
- Registriert: Montag 20. November 2006, 15:48
- Wohnort: formerly known as mkallas
- Kontaktdaten:
Code: Alles auswählen
url = 'http://www.meinedomain.de/?attr=1&'
url = url[:url.find('/',7)]
print url
Auf der geposteten Seite ist doch ein Beispiel, das man 1:1 umsetzen kann *kopfschüttel*B.A. hat geschrieben:Das mit urlparse ist mir ohne viel Ahnung zu heiß
Als "bugfix" ein Funktion zu verwenden, bei der man schon im Voraus weiß, dass bei bestimmten Eingaben wieder ein Bug auftritt, ist ja mehr als grausam...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Also bei PHP ist sowas Gang und Gäbe, ich muss mir nur mal phpBB 2.x-"Patches" ansehen *schauder* (wobei deren MOD-Dateien ja auch nur schlecht neuerfundene Diffs sind *kopfschüttel*).ice2k3 hat geschrieben:Als "bugfix" ein Funktion zu verwenden, bei der man schon im Voraus weiß, dass bei bestimmten Eingaben wieder ein Bug auftritt, ist ja mehr als grausam...
@OP: Du solltest dir wirklich ``urlparse`` anschauen. Ist nicht schwerer, aber dafür eine richtige Lösung des Problems.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Was, wenn die URLs nicht wohlgeformt sind?
Da ja reguläre Ausdrücke eine Lösung für alles sind, biete ich
:)
Stefan
Code: Alles auswählen
s = "heise.de"
s[:s.find("/", 7)]
=> heise.d Oops?
s = "www.abc.com?foo"
s[:s.find("/", 7)]
=> www.abc.com?fo Oops!
Code: Alles auswählen
re.findall("(?:https?://)?[^/?]+", s)[0]
Stefan
Zuletzt geändert von sma am Mittwoch 11. November 2009, 10:34, insgesamt 1-mal geändert.
sicherlich ist das die bessere Lösung ... nur ging es mir vorrangig um eine schnelle und einfach Lösung ... Und da mir alle Datensätzte bekannt sind da diese moderiert werden kann ich zu 100% ausschließen das da irgendwas steht was den Ablauf beeinträchtigen kann ...Leonidas hat geschrieben:Du solltest dir wirklich ``urlparse`` anschauen. Ist nicht schwerer, aber dafür eine richtige Lösung des Problems.
hab jetzt noch ein bisschen gespielt
Code: Alles auswählen
#!/usr/bin/python
import re
from urlparse import urlparse
url = "www.xxx.tld/?attr_source=xxx&attr_medium=213&attr_campaign=2"
o = urlparse("http://"+url)
print url[:url.find("/",7)]
print re.sub("([\/\?].*$)?", "", url)
print o.netloc
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Ich hoffe, das du nie an Software arbeitest, von der etwas abhängt.B.A. hat geschrieben:Und da mir alle Datensätzte bekannt sind da diese moderiert werden kann ich zu 100% ausschließen das da irgendwas steht was den Ablauf beeinträchtigen kann ...
1991 "Das Patriot Raketenabwehrsystem arbeitet innerhalb seiner definierten maximalen Betriebszeit einwandfrei." --> 25 Tote.
1995 "Das System wurde ausgiebig getestet. Zwischen Test- und Produktivbetrieb gibt es keine nennenswerten Unterschiede." --> Hamburger Stellwerk für 2 Tage dicht. Europaweite Störung des Bahn-Verkehrs.
1996 "Wir haben aus den Fehlern 1995 gelernt." --> Berliner S-Bahn für 6 Stunden still gelegt.
1996 "Die Anforderungen haben sich nicht geändert, wir können Programmteile des Vorgängers verwenden." -> Ariane 5 und 370 Millionen US-Dollar gehen in Rauch auf.
... unzählige Beispiele ...
2009 "Das Update hat bisher keine Probleme gemacht, dann können wir die letzten paar Systeme auch in einem Rutsch updaten." --> Ausfall von zwei der drei T-Mobile HTC. Mobilfunknetz für mehrere Stunden tot.
Bottle: Micro Web Framework + Development Blog