簡體   English   中英

如何在 if... else... 語句中使用 python 正則表達式?

[英]How to use python regular expression inside if... else... statement?

我的 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文件STEST.exe文件。 否則它應該下載以test_windows-x64開頭並以STEST.exe文件STEST.exe文件。

我是python的新手,我不知道如何做到這一點。 任何人都可以指導我嗎?

這看起來不太可能。 與您要執行的操作相匹配的正則表達式如下所示:

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 您不能在請求中使用通配符——網絡服務器必須知道如何處理它們,而它不知道。 更好的方法可能是:

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)

可以在沒有正則表達式的情況下嘗試這個:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM