【问题标题】:Changing out one or more pieces of a url in Python 3在 Python 3 中更改一个或多个 url
【发布时间】:2016-06-03 20:27:40
【问题描述】:

我正在 Python 3 中构建图像链接。我得到了一个基本的起始链接,并且我得到了一个或多个元素,这些元素需要根据与该原始链接相关联的模式来切换以创建我的新图像关联。我得到了链接和元素,我可以将每个链接类型与我可以存储在数据库中的模式联系起来。我正在寻找的是创建模式以切换数据的最佳方式。

例如: 我得到的第一个链接是:https://testurl.com/images/320/new.jpg 我得到一个 450 的值,并且模式规定应该将 450 换成 320 以创建一个新链接:https://testurl.com/images/450/new.jpg

我得到的第二个链接是http://newurl.com/stuff/image.jpg?resize=100 我被赋予了 200 的值,并且模式要求 200 需要替换 100 以创建 http://newurl.com/stuff/image.jpg.resize=200 的新链接

我得到的第三个链接是http://anotherlink.com/01/02/2016/today/newfolder/image.jpg 我得到一个字符串 02/15/2016 需要用 01/02/2016 换出,还有一个 oldfolder 字符串需要用新文件夹换出给我一个http://anotherlink.com/02/15/2016/today/oldfolder/image.jpg的链接

有没有办法存储可以处理所有 3 种不同场景的模式?同样,我可以为每个模式设置一个独特的模式,我只需要相同的代码就能成功执行所有 3 个模式。

我想我可以使用正则表达式来做到这一点,并且我过去已经使用它进行了验证,但我不确定是否有一种方法可以根据模式实际更改部分字符串,而不仅仅是匹配。

我的另一个想法是创建一个模板并执行查找和替换循环,直到所有替换元素都被换掉,但这看起来很混乱。有什么建议吗?

【问题讨论】:

  • "https://testurl.com/images/320/new.jpg".replace("320", "450")

标签: regex python-3.x pattern-matching


【解决方案1】:

我有这个代码应该可以满足你的要求,我还没有测试过,但是如果它不起作用,或者它没有达到你想要的效果,请添加评论:

url=""         #URL to use
replace=""  #string to replace original with
if "resize=" in url:
    for i in range(len(url)):
        try:
            int(url[-1:])
        except Exception:
            break
        else:
            url=url[:-1]
    url+=str(replace)
elif [e for e in range(len(url)) if url[e:][:(e+10)].replace("/","").isalpha()==False]:
    for e in range(len(url)):
        if url[:(e+10)][e:].replace("/","").isdigit()==True:
            if url[e:][:1]!="/":
                url=url[:e]+replace+url[(e+10):]
                url=url.replace("newfolder","oldfolder")
                break
else:
    url1=url.split("/")
    url1[len(url1)-2]=replace
    url=""
    for i in url1:
        url+=i+"/"
print(url)

希望这会有所帮助。

编辑:

我现在已经测试了代码,并修复了错误,它似乎工作正常,但如果它不工作仍然添加注释。

【讨论】:

  • 太棒了。谢谢你。我今天会试一试,让你知道。感谢您的帮助。
  • 我以你给我的东西为基础,针对传入的变量做了更多的自动化,但最后这非常有帮助。谢谢。
  • 很高兴我能帮上忙。
猜你喜欢
  • 1970-01-01
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
  • 2017-09-07
  • 2012-10-25
  • 1970-01-01
相关资源
最近更新 更多