Strip() macht was es soll aber nicht was ich will

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
Herr Lehmann
User
Beiträge: 81
Registriert: Samstag 14. August 2010, 22:20

Hallo,

seit 3 Wochen beschäftige ich mich jetzt mit Python und bin wirklich begeistert. Leider gibts noch ein paar Stolpersteine aber meine Fragen wurden hier bisher immer perfekt beantwortet. Danke dafür!

Meine heutige Frage beschäftigt sich mit Strip() Und Zwar habe ich folgenden Code:

Code: Alles auswählen

o = urlparse(link)
id = o.path.strip("file/")

der o.path lautet immer file/dateiname

ich brauch aber nur dateiname, daher meine Idee es mit Strip zu machen. Geht allerdings nur dann gut wenn im Datei namen kein f,i,l oder e vorkommt. bei obigem Beispiel würde datnam aus dem datei Namen. Das hat ja auch seine Richtigkeit, wie ich in der Docu erfachen haben. Aber ich habe dort keine Hinweis darauf gefunden wir man Strip sozusagen mit einem ganzen String anwendet.

Vielen Dank schon mal für eure Hilfe.

Gruß

Herr Lehmann
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich denke, du suchst os.path.basename().

Wobei, Vorsicht: Da die Erkennung für Dateien auf dem Betriebssystem gedacht ist, würde das auf einem Windows-System nicht funktionieren, wenn URLs behandelt werden sollen. Denn dort wird der Backslash als Pfadtrenner verwendet. Eine einheitliche Lösung wäre dann eher:

Code: Alles auswählen

url.split('/')[-1]
Den Weg über `urlsplit()` kann man sich damit auch sparen.
BlackJack

@snafu: `urlparse()` kann trotzdem noch Sinn machen. Die URLs können ja auch so aussehen: 'http://user@domain.com/file/dateiname?spam=eggs#parrot'
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Und statt ``os`` kann man ja auch ``posix`` nehmen, die Pfadzusammensetz-Funktionalität ist auch auf nicht-Unices verfügbar.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Okay, das habe ich nicht bedacht. Dann funktioniert als Ersatz natürlich auch `posixpath.basename()`. Das Modul `os.path` greift unter Unices ohnehin auf die Funktion zu und auf Windows-Systemen besteht damit die Sicherheit, dass nichts schief läuft.
Herr Lehmann
User
Beiträge: 81
Registriert: Samstag 14. August 2010, 22:20

snafu hat geschrieben: Eine einheitliche Lösung wäre dann eher:

Code: Alles auswählen

url.split('/')[-1]
Den Weg über `urlsplit()` kann man sich damit auch sparen.

Das ist perfekt! Danke auch für die anderen sehr aufschlussreichen Antworten.
Antworten