我正在尝试让python从URL字符串中提取一些文本。
以下是网址https://somewebsite/images/products/SkuName/genricFileName.jpg
的示例SkuName总是在第5个“ /”之后,并在第6个“ /”之后结束
我想提取“ SkuName”
import urllib.request
images = input('please enter url list separated by ","')
names = input('please enter images names separated by ","')
images = images.split(',')
names = names.split(',')
for index, image in enumerate(images):
urllib.request.urlretrieve(image, "images/{}.jpg".format(names[index]))
print('images downloaded successfully')
如您所见,用户必须手动输入SKU名称(位于变量“名称”下)
我希望用户仅输入一个输入(URL),然后python自动从URL字符串中提取SKUName
谢谢!
答案 0 :(得分:1)
如果您确定名称在URL中的(绝对)位置不会改变,那么url.split('/')[5]
应该可以解决您的问题。
答案 1 :(得分:0)
如果该格式是固定的,则可以拆分URL并从结果列表中访问倒数第二个元素:
url = "https://somewebsite/images/products/SkuName/genricFileName.jpg"
skuName = url.split("/")[-2]
答案 2 :(得分:0)
您似乎已经意识到split函数。您可以将其与slicing结合使用,以获取所需的内容。
singlelist = ( model.getfirstlist().getItems() +
model.getSecondlist().getItems())
setListData(singlelist);
这将产生列表中倒数第二个元素。您也可以使用搜索第六个元素。
skuName = input('url').split('/')[:-2]
答案 3 :(得分:0)
您可以使用python regex做到这一点。 注意:根据您的网址更改模式
import re
url = 'https://somewebsite/images/products/SkuName/genricFileName.jpg'
pattern = re.compile(r'(?<=(https://somewebsite/images/products/)).*(?=/genricFileName.jpg)', re.I)
sku_name = pattern.search(url).group()