python - 用于从 dict 中提取所有 url 的正则表达式,如字符串
问题描述
这是我必须从中提取网址的字符串
s = "'0352442':{url:'https://www.riteaid.com/shop/nexium-24hr-42-ct-capsules-0352442'},'0370009':{url:'https://www.riteaid.com/shop/rite-aid-pharmacy-epsom-salt-first-aid-6-lb-2-72-kg-0370009'},'0303249':{url:'https://www.riteaid.com/shop/huggies-natural-care-unscented-baby-wipes-soft-pack-56-count-0303249'},'0398568':{url:'https://www.riteaid.com/shop/rite-aid-sterile-pads-4-x4-25-ea-0398568'},}"
到目前为止,我尝试的代码仅打印
urls = re.findall('https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+', s)
但它只打印此网址的重复
['https://www.riteaid.com']
解决方案
正如您提到的 dict 之类的字符串,您必须针对您的特定情况使用正则表达式,这可以使用。
s = "'0352442':{url:'https://www.riteaid.com/shop/nexium-24hr-42-ct-capsules-0352442'},'0370009':{url:'https://www.riteaid.com/shop/rite-aid-pharmacy-epsom-salt-first-aid-6-lb-2-72-kg-0370009'},'0303249':{url:'https://www.riteaid.com/shop/huggies-natural-care-unscented-baby-wipes-soft-pack-56-count-0303249'},'0398568':{url:'https://www.riteaid.com/shop/rite-aid-sterile-pads-4-x4-25-ea-0398568'},}"
urls = re.findall(r"url:'(https?://.*?)'}", s)
result:
['https://www.riteaid.com/shop/nexium-24hr-42-ct-capsules-0352442',
'https://www.riteaid.com/shop/rite-aid-pharmacy-epsom-salt-first-aid-6-lb-2-72-kg-0370009',
'https://www.riteaid.com/shop/huggies-natural-care-unscented-baby-wipes-soft-pack-56-count-0303249',
'https://www.riteaid.com/shop/rite-aid-sterile-pads-4-x4-25-ea-0398568']
解释
url:'(http : 文字串
年代?: 可选文字字符“s”
.*? :非贪婪的任何角色。
'}: : 文字字符串
推荐阅读
- python - Flask 应用程序在本地工作,在 heroku 上失败。Procfile 和 requirements.txt 没有这样做..?
- reactjs - React Router:重定向到不同的组件
- java - 如果我不调用 .join() 方法,CompletableFuture 线程将永远关闭?
- mysql - 在 Sequelize 中,带有预定义表的 N:M 联结表导致事务锁定错误(MySQL)
- bash - 来自剧本的 CURL 调用中缺少变量值
- azure-devops - 如何在 Azure Devops 中使用 WIX 创建 .msi 安装程序?
- amazon-web-services - 在 aws 上设计基于微服务的架构(我的用例需要使用 kafka 但我无法设计架构)
- node.js - 发送到客户端后无法设置标头
- r - 通过 HTML 表单下载 CSV 格式的文件
- swagger - OAS3 回调是否也与服务实现部分相关,如果这个回调端点也可能是不同 Swagger 的一部分?