Python拆分网址以查找图像名称和扩展名

时间:2012-05-11 13:20:44

标签: python django file-io

我正在寻找一种使用Python

从特定网址中提取文件名和扩展名的方法

让我们说URL如下所示

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

我将如何获得以下内容。

filename = "da4ca3509a7b11e19e4a12313813ffc0_7"
file_ext = ".jpg"

7 个答案:

答案 0 :(得分:30)

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

唯一的缺点是你的文件名将包含一个前置/你可以随时删除的文件。

答案 1 :(得分:12)

尝试使用urlparse.urlsplit分割网址,然后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')

答案 2 :(得分:10)

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

答案 3 :(得分:5)

# 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(' /')时,它会从你的网址中返回一个由/拆分的字符串列表。 如果你知道python列表索引很好,你就知道-1会给你最后一个元素或列表末尾的第一个元素。 在您的情况下,它将是文件名:da4ca3509a7b11e19e4a12313813ffc0_7.jpg

通过分隔符.拆分,您会得到两个值: 正如预期的那样,da4ca3509a7b11e19e4a12313813ffc0_7jpg因为它们被您在split()调用中用作分隔符的句点分隔。

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

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

答案 4 :(得分:1)

使用os.path.splitext从网址中提取相关字符串后,

urlparse将帮助您解压缩文件名和扩展名:

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

答案 5 :(得分: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')

答案 6 :(得分:-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'