Если у меня есть имя файла, как один из них:Получить имя файла без расширения в Python
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Как я мог получить только имя файла без расширения? Было ли подходящим регулярное выражение?
Если у меня есть имя файла, как один из них:Получить имя файла без расширения в Python
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Как я мог получить только имя файла без расширения? Было ли подходящим регулярное выражение?
В большинстве случаев вам не следует использовать регулярное выражение.
os.path.splitext(filename)[0]
Это также будет обрабатывать имя файла, как .bashrc
правильно, сохраняя полное имя.
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
Нет необходимости в регулярном выражении. os.path.splitext
ваш друг:
os.path.splitext('1.1.1.jpg')
>>> ('1.1.1', '.jpg')
Если бы я должен был сделать это с помощью регулярных выражений, я бы сделал это так:
s = re.sub(r'\.jpg$', '', s)
@nate C: Я поправками свой ответ в то время как вы пишете свой комментарий , –
Не работает должным образом с «git-1.7.8.tar.gz», где он удаляет только «.gz». Для этого я использую 'basename [: - len (". Tar.gz ")]. – blueyed
@blueyed: «Не работает должным образом» - вопрос перспективы. Файл * является * gzip-файлом, базовым именем которого является 'git-1.7.8.tar'. Невозможно правильно догадаться, сколько точек, которые вызывающий хочет отключить, поэтому 'splitext()' только разделяет последний. Если вы хотите обрабатывать крайние регистры типа '.tar.gz', вам придется делать это вручную. Очевидно, вы не можете удалить все точки, так как вы получите «git-1». –