如何使用python正则表达式里面如果。。。否则。。。声明?

2021-10-17 17:43:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我的Python脚本:

import wget

if windowsbit == x86:
    url = 'http://test.com/test_windows_2_56_30-STEST.exe'
    filename = wget.download(url)
else:
    url = 'http://test.com/test_windows-x64_2_56_30-STEST.exe'
    filename = wget.download(url)

在上面的python脚本中,我使用wget模块下载一个基于windows 32位或64位的文件表单URL。一切正常。你知道吗

我想使用正则表达式执行以下操作:

如果windowsbit == x86,它应该下载以test_windows开始并以STEST.exe文件结束的文件。 否则它应该下载以test_windows-x64开始并以STEST.exe文件结束的文件。你知道吗

我是python新手,我不知道怎么做。有谁能给我指点一下吗?你知道吗

2条回答
网友
1楼 ·

可以尝试不带正则表达式的方法:

import wget

text ="http://test.com/test_windows"

if windowsbit == x86:
    url = '{}_2_56_30-STEST.exe'.format(text)
else:
    url = '{}-x64_2_56_30-STEST.exe'.format(text)
filename = wget.download(url)

版本:

import wget

text ="http://test.com/test_windows"
version = '2_56_30'

if windowsbit == x86:
    url = '{}_{}-STEST.exe'.format(text,version)
else:
    url = '{}-x64_{}-STEST.exe'.format(text,version)
filename = wget.download(url)
网友
2楼 ·

这看起来不可能。与您尝试执行的操作相匹配的正则表达式如下所示:

import re

urlre = re.compile("""
    http://test.com/test_windows    # base URL
    (?P<bit>-x64)?                  # captures -x64 if present
    _(?P<version_major>\d+)         # captures major version
    _(?P<version_minor>\d+)         # captures minor version
    _(?P<version_revision>\d+)      # captures revision version
    -STEST.exe                      # ending filename""", re.X)

但是你不能把它扔到wget。您不能在请求中使用通配符Web服务器必须知道如何处理它们,但事实并非如此。更好的方法可能是:

base_url = "http://test.com/test_windows"
if windowsbit == x64:
    base_url += "-x64"
version = "2_56_30"
filename = "STEST.exe"

final_url = "{base}_{version}-{filename}".format(
    base=base_url, version=version, filename=filename)

相关问题