Si j'ai un nom de fichier comme un de ces:Obtenez Nom du fichier sans extension en Python
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Comment pourrais-je obtenir que le nom du fichier, sans l'extension? Une regex serait-elle appropriée?
Si j'ai un nom de fichier comme un de ces:Obtenez Nom du fichier sans extension en Python
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Comment pourrais-je obtenir que le nom du fichier, sans l'extension? Une regex serait-elle appropriée?
Dans la plupart des cas, vous ne devriez pas utiliser une regex pour cela.
os.path.splitext(filename)[0]
Cela traitera également un nom de fichier comme .bashrc
correctement en gardant le nom entier.
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
Pas besoin de regex. os.path.splitext
est votre ami:
os.path.splitext('1.1.1.jpg')
>>> ('1.1.1', '.jpg')
Si je devais le faire avec une expression régulière, je le ferais comme ceci:
s = re.sub(r'\.jpg$', '', s)
@nate c: Je modifié ma réponse pendant que vous écrivez votre commentaire . –
Ne fonctionne pas correctement avec "git-1.7.8.tar.gz", où il ne supprime que le ".gz". J'utilise 'basename [: - len (". Tar.gz ")]' pour cela. – blueyed
@blueyed: "Ne fonctionne pas correctement" est une question de perspective. Le fichier * est * un fichier gzip, dont le nom de base est 'git-1.7.8.tar'. Il n'y a aucun moyen de deviner correctement le nombre de points que l'appelant veut supprimer, donc 'splitext()' ne supprime que le dernier. Si vous voulez gérer des cas-bords comme '.tar.gz', vous devrez le faire à la main. Évidemment, vous ne pouvez pas enlever tous les points, puisque vous finirez avec 'git-1'. –