如何在python中切换链接?

时间:2014-02-28 17:05:34

标签: python regex url

我有以下链接:

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中做到这一点?

4 个答案:

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