Wenn ich einen Dateinamen wie eine von ihnen habe:Get
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Wie kann ich nur die Dateinamen zu bekommen, ohne die Erweiterung? Wäre ein Regex angemessen?
Wenn ich einen Dateinamen wie eine von ihnen habe:Get
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Wie kann ich nur die Dateinamen zu bekommen, ohne die Erweiterung? Wäre ein Regex angemessen?
In den meisten Fällen sollten Sie keine Regex dafür verwenden.
os.path.splitext(filename)[0]
Dies wird auch einen Dateinamen wie .bashrc
korrekt durch den ganzen Namen zu halten handhaben.
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
Keine Notwendigkeit für Regex. os.path.splitext
ist dein Freund:
os.path.splitext('1.1.1.jpg')
>>> ('1.1.1', '.jpg')
Wenn ich dies mit einem regulären Ausdruck zu tun habe, habe ich es so tun würde:
s = re.sub(r'\.jpg$', '', s)
@nate c: Ich geändert meine Antwort, während Sie Ihren Kommentar schreiben . –
Funktioniert nicht ordnungsgemäß mit "git-1.7.8.tar.gz", wo es nur die ".gz" entfernt. Ich benutze 'basename [: - len (". Tar.gz ")]' dafür. – blueyed
@blueyed: "Funktioniert nicht richtig" ist eine Frage der Perspektive. Die Datei * ist * eine Gzip-Datei, deren Basisname 'git-1.7.8.tar' ist. Es gibt keine Möglichkeit, richtig zu erraten, wie viele Punkte der Anrufer entfernen möchte, sodass 'splitext()' nur die letzte löscht. Wenn Sie Edge-Cases wie '.tar.gz' bearbeiten wollen, müssen Sie das von Hand machen. Natürlich können Sie nicht alle Punkte entfernen, da Sie mit "git-1" enden. –