简化Python代码?

简化Python代码?,python,regex,Python,Regex,我想写一个Python脚本,它可以下载充满链接的数组的每一张图片 代码如下所示: for url in array: if 'jpg' in url or 'jpeg' in url or 'png' in url or 'gif' in url: print url 正如您所看到的,if语句效率很低,我想简化它。如果可能的话,最好使用正则表达式。有人能帮我一下吗?正则表达式不是合适的工具,因为你没有匹配模式,只是在寻找子字符串 相反,您应该使用和: 作为奖励,此解决方

我想写一个Python脚本,它可以下载充满链接的数组的每一张图片

代码如下所示:

for url in array:
    if 'jpg' in url or 'jpeg' in url or 'png' in url or 'gif' in url:
        print url

正如您所看到的,if语句效率很低,我想简化它。如果可能的话,最好使用正则表达式。有人能帮我一下吗?

正则表达式不是合适的工具,因为你没有匹配模式,只是在寻找子字符串

相反,您应该使用和:


作为奖励,此解决方案与您当前的解决方案一样懒惰(它只在成员资格测试中根据需要执行尽可能多的

虽然这不同,但它更符合您的意图:

for url in array:
    if url.rsplit('.',1)[1] in ('jpg', 'jpeg', 'png', 'gif'):
        print url

您可能不需要正则表达式来执行此操作,但如果您仍然需要,以下是一种方法:


使用正则表达式做同样的事情看起来像这样

pattern = re.compile('jpg|jpeg|png|gif')

for url in array:
    if pattern.search(url) is not None:
        print url

我将使用os.path.splitext:

import os
for url in array:
    _, ext = os.path.splitext(url)
    if ext in ('.jpg', '.jpeg', '.png', '.gif'):
        print url

考虑查看工作代码。我将尝试处理该情况,但这不是一个严格无效的文件名,所以我不知道这是否是必要的检查。这将匹配URLs,例如“代码> MyGIf.COM/index。HTML<代码>。虽然最初的问题也会匹配这些url,但我们只想匹配url末尾的扩展名。当然,你可以改进它,但这不是我们要求的。
import os
for url in array:
    _, ext = os.path.splitext(url)
    if ext in ('.jpg', '.jpeg', '.png', '.gif'):
        print url