11

我正在寻找一种使用 Python 从特定 url 中提取文件名和扩展名的方法

假设一个 URL 如下所示

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

我将如何获得以下内容。

filename = "da4ca3509a7b11e19e4a12313813ffc0_7"
file_ext = ".jpg"
4

7 回答 7

32
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))

唯一的缺点是您的文件名将包含前面的 / ,您可以随时将其删除。

于 2012-05-11T13:29:10.393 回答
12

尝试使用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')
于 2012-05-11T13:28:20.510 回答
10
filename = picture_page.split('/')[-1].split('.')[0]
file_ext = '.'+picture_page.split('.')[-1]
于 2012-05-11T13:27:37.343 回答
7
# 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_7jpg,正如预期的那样,因为它们由您在 split() 调用中用作分隔符的句点分隔。

现在,由于最后一次拆分在结果列表中返回两个值,您可以对其进行元组化。因此,基本上,结果将是:

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

于 2014-09-18T13:16:38.487 回答
3

os.path.splitext从 URL 中提取相关字符串后,将帮助您提取文件名和扩展名urlparse

   fName, ext = os.path.splitext('yourImage.jpg')
于 2012-05-11T13:28:26.427 回答
0

这是使用正则表达式查找图像名称扩展名的最简单方法。

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')
于 2019-08-21T09:06:57.757 回答
-2
>>> 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'
于 2012-05-11T13:31:46.880 回答