Si tengo un nombre de archivo como uno de ellos:Obtener nombre del archivo sin la extensión en Python
1.1.1.1.1.jpg
1.1.jpg
1.jpg
¿Cómo podría obtener sólo el nombre del archivo sin la extensión? ¿Una expresión regular sería apropiada?
Si tengo un nombre de archivo como uno de ellos:Obtener nombre del archivo sin la extensión en Python
1.1.1.1.1.jpg
1.1.jpg
1.jpg
¿Cómo podría obtener sólo el nombre del archivo sin la extensión? ¿Una expresión regular sería apropiada?
En la mayoría de los casos, no debe usar una expresión regular para eso.
os.path.splitext(filename)[0]
Esto también se encargará de un nombre de fichero como .bashrc
correctamente manteniendo el nombre completo.
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
No hay necesidad de expresiones regulares. os.path.splitext
es su amigo:
os.path.splitext('1.1.1.jpg')
>>> ('1.1.1', '.jpg')
Si tuviera que hacer esto con una expresión regular, lo haría así:
s = re.sub(r'\.jpg$', '', s)
@nate c: I modificado mi respuesta mientras estaba escribiendo su comentario . –
No funciona correctamente con "git-1.7.8.tar.gz", donde solo elimina ".gz". Yo uso 'basename [: - len (". Tar.gz ")]' para esto. – blueyed
@blueyed: "No funciona correctamente" es una cuestión de perspectiva. El archivo * es * un archivo gzip, cuyo nombre base es 'git-1.7.8.tar'. No hay forma de adivinar correctamente cuántos puntos quiere quitar la persona que llama, por lo que 'splitext()' solo elimina la última. Si quieres manejar casos extremos como '.tar.gz', tendrás que hacerlo a mano. Obviamente, no puedes quitar todos los puntos, ya que terminarás con 'git-1'. –