我正在寻找一种使用Python
从特定网址中提取文件名和扩展名的方法让我们说URL如下所示
picture_page = "http://distilleryimage2.instagram.com/da4ca3509a7b11e19e4a12313813ffc0_7.jpg"
我将如何获得以下内容。
filename = "da4ca3509a7b11e19e4a12313813ffc0_7"
file_ext = ".jpg"
答案 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_7
和jpg
因为它们被您在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'