Seite 1 von 1

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

Verfasst: Mittwoch 25. August 2010, 08:30
von Herr Lehmann
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

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

Verfasst: Mittwoch 25. August 2010, 08:43
von snafu
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.

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

Verfasst: Mittwoch 25. August 2010, 09:37
von 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'

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

Verfasst: Mittwoch 25. August 2010, 09:49
von Leonidas
Und statt ``os`` kann man ja auch ``posix`` nehmen, die Pfadzusammensetz-Funktionalität ist auch auf nicht-Unices verfügbar.

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

Verfasst: Mittwoch 25. August 2010, 10:01
von snafu
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.

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

Verfasst: Mittwoch 25. August 2010, 10:58
von Herr Lehmann
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.