我有以下链接:
http://ecx.images-amazon.com/images/I/51JXXb2vpDL._SY344_PJlook-inside-v2,TopRight,1,0_SH20_BO1,204,203,200_.jpg
如何只获取链接的这一部分:
http://ecx.images-amazon.com/images/I/51JXXb2vpDL.jpg
并删除其他所有内容?我也想保留扩展名。
我想删除此部分:
._SY344_PJlook-inside-v2,TopRight,1,0_SH20_BO1,204,203,200_
并保留此部分:
http://ecx.images-amazon.com/images/I/51JXXb2vpDL.jpg
我怎么能在python中做到这一点?
答案 0 :(得分:1)
您可以使用:
re.sub(r'\._[\w.,-]*(\.(?:jpg|png|gif))$', r'\1', inputurl)
这做了一些假设,但适用于您的输入。搜索从._
序列开始,在此之后采取任何字母,数字,短划线,下划线,点或逗号,然后匹配扩展名。我选择了一小组可能的扩展;您也可以在最后使用(\.w+)$
,而不是扩大字词可接受的扩展名。
演示:
>>> import re
>>> inputurl = 'http://ecx.images-amazon.com/images/I/51JXXb2vpDL._SY344_PJlook-inside-v2,TopRight,1,0_SH20_BO1,204,203,200_.jpg'
>>> re.sub(r'\._[\w.,-]*(\.(?:jpg|png|gif))$', r'\1', inputurl)
'http://ecx.images-amazon.com/images/I51JXXb2vpDL.jpg'
答案 1 :(得分:1)
以下内容应该有效:
import re
url = "http://ecx.images-amazon.com/images/I/51JXXb2vpDL._SY344_PJlook-inside-v2,TopRight,1,0_SH20_BO1,204,203,200_.jpg"
print re.sub(r"(https?://.+?)\._.+(\.\w+)", r'\1\2', url)
上面的代码打印
http://ecx.images-amazon.com/images/I/51JXXb2vpDL.jpg
重要细节:需要更多链接才能找到正确的模式。我目前假设你想要一切,直到第一个._
答案 2 :(得分:1)
url = "http://ecx.images-amazon.com/images/I/51JXXb2vpDL._SY344_PJlook-inside-v2,TopRight,1,0_SH20_BO1,204,203,200_.jpg"
l = url.split(".")
print(".".join(l[:-2:])+".{}".format(l[-1]))
打印
http://ecx.images-amazon.com/images/I/51JXXb2vpDL.jpg
答案 3 :(得分:0)
url = re.sub("(/[^./]+)\.[^/]*?(\.[^.]+)$", "\\1\\2", url)