【问题标题】:How to cut link in python? [closed]如何在python中剪切链接? [关闭]
【发布时间】:2014-02-28 17:05:33
【问题描述】:

我有以下链接:

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

【问题讨论】:

  • 您在这里寻找的模式是什么?任何超出首字母和数字的内容一直到扩展名?还是需要寻找._SY 开头?一个例子不是一种模式。
  • 应该支持哪些扩展?只是.jpg 或者是.png.gif 选项等等。你需要在这里告诉我们更多关于输入的信息。
  • 对了,它可以是jpg、png、gif。 99% 是 jpg,但我不能确定 jpg 会变成 100%

标签: python regex url


【解决方案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'

【讨论】:

  • 问题是在这个链接中包含'._'然后我剪掉了我需要的部分。
  • @Krasimir:为您添加了\._ 测试。
【解决方案2】:
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】:

    以下应该有效:

    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
    

    一个重要的细节:需要更多链接才能找到正确的模式。我目前假设你想要一切,直到第一个 ._

    【讨论】:

    • 问题是在这个链接中包含'._'然后我剪掉了我需要的部分。
    • @Krasimir 你能解释一下吗?我没明白你的意思。
    • 如果这里:'51JXXb2vpDL' 存在 '._' '51JXX._b2vpDL' 那么正则表达式不起作用。
    • 还是不明白。请给我一个来自亚马逊的具体链接,以了解您的意思。
    【解决方案4】:
    url = re.sub("(/[^./]+)\.[^/]*?(\.[^.]+)$", "\\1\\2", url)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多