Wenn ich einen Dateinamen wie diesen habe:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Wie könnte ich nur den Dateinamen ohne die Erweiterung erhalten? Wäre eine Regex angemessen?
Wenn ich einen Dateinamen wie diesen habe:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Wie könnte ich nur den Dateinamen ohne die Erweiterung erhalten? Wäre eine Regex angemessen?
Antworten:
In den meisten Fällen sollten Sie dafür keinen regulären Ausdruck verwenden.
os.path.splitext(filename)[0]
Dadurch wird auch ein Dateiname wie .bashrc
korrekt behandelt, indem der gesamte Name beibehalten wird.
basename[:-len(".tar.gz")]
dafür.
git-1.7.8.tar
. Es gibt keine Möglichkeit, richtig zu erraten, wie viele Punkte der Anrufer entfernen möchte, daher wird splitext()
nur der letzte entfernt. Wenn Sie mit Randfällen wie umgehen möchten, .tar.gz
müssen Sie dies von Hand tun. Natürlich können Sie nicht alle Punkte entfernen, da Sie am Ende mit git-1
.
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
Wenn ich das mit einem regulären Ausdruck machen müsste, würde ich es so machen:
s = re.sub(r'\.jpg$', '', s)
Keine Notwendigkeit für Regex. os.path.splitext
ist dein Freund:
os.path.splitext('1.1.1.jpg')
>>> ('1.1.1', '.jpg')
Sie können die Stammmethode verwenden, um den Dateinamen abzurufen.
Hier ist ein Beispiel:
from pathlib import Path
p = Path(r"\\some_directory\subdirectory\my_file.txt")
print(p.stem)
# my_file