Python разделил URL-адрес, чтобы найти имя и расширение имени

Я ищу способ извлечь имя файла и расширение из определенного URL-адреса с помощью Python

позволяет сказать, что URL выглядит следующим образом

picture_page = "http://distilleryimage2.instagram.com/da4ca3509a7b11e19e4a12313813ffc0_7.jpg"

Как мне получить следующее.

filename = "da4ca3509a7b11e19e4a12313813ffc0_7"
file_ext = ".jpg"

Ответ 1

from urlparse import urlparse
from os.path import splitext, basename

picture_page = "http://distilleryimage2.instagram.com/da4ca3509a7b11e19e4a12313813ffc0_7.jpg"
disassembled = urlparse(picture_page)
filename, file_ext = splitext(basename(disassembled.path))

Единственным недостатком является то, что ваше имя файла будет содержать предыдущее/которое вы всегда можете удалить самостоятельно.

Ответ 2

Попробуйте с urlparse.urlsplit разделить URL-адрес, а затем os.path.splitext, чтобы получить имя файла и расширение (используйте os.path.basename, чтобы сохранить только последнее имя файла):

import urlparse
import os.path

picture_page = "http://distilleryimage2.instagram.com/da4ca3509a7b11e19e4a12313813ffc0_7.jpg"

print os.path.splitext(os.path.basename(urlparse.urlsplit(picture_page).path))

>>> ('da4ca3509a7b11e19e4a12313813ffc0_7', '.jpg')

Ответ 3

filename = picture_page.split('/')[-1].split('.')[0]
file_ext = '.'+picture_page.split('.')[-1]

Ответ 4

# Here your link:
picture_page = "http://distilleryimage2.instagram.com/da4ca3509a7b11e19e4a12313813ffc0_7.jpg"

#Here your filename and ext:
filename, ext = (picture_page.split('/')[-1].split('.'))

Когда вы выполните picture_page.split('/'), он вернет список строк из вашего раскола url с помощью /. Если вы хорошо знаете индексацию списка python, вы должны знать, что -1 даст вам последний элемент или первый элемент из конца списка. В вашем случае это будет имя файла: da4ca3509a7b11e19e4a12313813ffc0_7.jpg

Разделив это на разделитель ., вы получите два значения: da4ca3509a7b11e19e4a12313813ffc0_7 и jpg, как и ожидалось, потому что они разделены периодом, который вы использовали в качестве разделителя в вызове split().

Теперь, поскольку последний раскол возвращает два значения в результирующем списке, вы можете его tuplify. Следовательно, в основном, результат будет выглядеть следующим образом:

filename,ext = ('da4ca3509a7b11e19e4a12313813ffc0_7', 'jpg')

Ответ 5

os.path.splitext поможет вам извлечь имя файла и расширение после того, как вы извлекли соответствующую строку из URL с помощью urlparse:

   fName, ext = os.path.splitext('yourImage.jpg')

Ответ 6

Это самый простой способ найти имя и расширение изображения с помощью регулярного выражения.

import re
import sys

picture_page = "http://distilleryimage2.instagram.com/da4ca3509a7b11e19e4a12313813ffc0_7.jpg"

regex = re.compile('(.*\/(?P<name>\w+)\.(?P<ext>\w+))')

print  regex.search(picture_page).group('name')
print  regex.search(picture_page).group('ext')

Ответ 7

>>> import re
>>> s = 'picture_page = "http://distilleryimage2.instagram.com/da4ca3509a7b11e19e4a12313813ffc0_7.jpg"'
>>> re.findall(r'\/([a-zA-Z0-9_]*)\.[a-zA-Z]*\"$',s)[0]
'da4ca3509a7b11e19e4a12313813ffc0_7'
>>> re.findall(r'([a-zA-Z]*)\"$',s)[0]
'jpg'