我正在寻找一种使用 Python 从特定 url 中提取文件名和扩展名的方法
假设一个 URL 如下所示
picture_page = "http://distilleryimage2.instagram.com/da4ca3509a7b11e19e4a12313813ffc0_7.jpg"
我将如何获得以下内容。
filename = "da4ca3509a7b11e19e4a12313813ffc0_7"
file_ext = ".jpg"
try:
# Python 3
from urllib.parse import urlparse
except ImportError:
# Python 2
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))
唯一的缺点是您的文件名将包含前面的 / ,您可以随时将其删除。
尝试使用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')
filename = picture_page.split('/')[-1].split('.')[0]
file_ext = '.'+picture_page.split('.')[-1]
# Here's your link:
picture_page = "http://distilleryimage2.instagram.com/da4ca3509a7b11e19e4a12313813ffc0_7.jpg"
#Here's your filename and ext:
filename, ext = (picture_page.split('/')[-1].split('.'))
当您执行 picture_page.split('/') 时,它会从您的 url 返回一个字符串列表,由/
. 如果你很了解 python 列表索引,你就会知道 -1 会给你最后一个元素或列表末尾的第一个元素。在您的情况下,它将是文件名:da4ca3509a7b11e19e4a12313813ffc0_7.jpg
通过 demeter 拆分.
,您会得到两个值:
da4ca3509a7b11e19e4a12313813ffc0_7
和jpg
,正如预期的那样,因为它们由您在 split() 调用中用作分隔符的句点分隔。
现在,由于最后一次拆分在结果列表中返回两个值,您可以对其进行元组化。因此,基本上,结果将是:
filename,ext = ('da4ca3509a7b11e19e4a12313813ffc0_7', 'jpg')
os.path.splitext
从 URL 中提取相关字符串后,将帮助您提取文件名和扩展名urlparse
:
fName, ext = os.path.splitext('yourImage.jpg')
这是使用正则表达式查找图像名称和扩展名的最简单方法。
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')
>>> 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'