Jika saya memiliki nama file seperti ini:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Bagaimana saya bisa mendapatkan hanya nama file, tanpa ekstensi? Apakah ekspresi reguler sesuai?
Jika saya memiliki nama file seperti ini:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Bagaimana saya bisa mendapatkan hanya nama file, tanpa ekstensi? Apakah ekspresi reguler sesuai?
Jawaban:
Dalam kebanyakan kasus, Anda tidak boleh menggunakan regex untuk itu.
os.path.splitext(filename)[0]
Ini juga akan menangani nama file seperti .bashrc
benar dengan menyimpan seluruh nama.
basename[:-len(".tar.gz")]
untuk ini.
git-1.7.8.tar
. Tidak ada cara untuk menebak dengan tepat berapa banyak titik yang ingin dihapus oleh pemanggil, jadi splitext()
hanya hapus yang terakhir. Jika Anda ingin menangani kasus tepi seperti .tar.gz
, Anda harus melakukannya dengan tangan. Jelas, Anda tidak dapat menghapus semua titik, karena Anda akan berakhir dengan git-1
.
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
Jika saya harus melakukan ini dengan regex, saya akan melakukannya seperti ini:
s = re.sub(r'\.jpg$', '', s)
Anda dapat menggunakan metode batang untuk mendapatkan nama file.
Berikut ini contohnya:
from pathlib import Path
p = Path(r"\\some_directory\subdirectory\my_file.txt")
print(p.stem)
# my_file