【问题标题】:Determine the firefox version available for update using Python使用 Python 确定可用于更新的 firefox 版本
【发布时间】:2013-07-01 20:09:25
【问题描述】:

我正在寻找 sn-p,它将检查哪个版本可用于下载更新。 我使用python 3.x。因此,如果有人提示我如何检查服务器上可用的版本,那就太好了。输出应生成一个变量,其中存储了 firefox 的版本号。例如 22.0

我选择使用 linux 作为操作系统。

要清楚: 我不想知道我的系统上已经安装了哪个版本。我想知道哪个版本可以更新。

到目前为止,我得到了以下代码:

def firefox_version_remote():
firefox_version_fresh = os.popen("curl -s -l  ftp.mozilla.org/pub/mozilla.org/firefox/releases/latest/linux-i686/de/").read()
# short name for firefox version num fresh
fvnf = " "

for i in firefox_version_fresh:
    if i.isalpha() != True:
        fvnf = fvnf + i

return fvnf.strip()

这将返回 -22.0..2 它应该返回 22.0

【问题讨论】:

标签: linux firefox python-3.x


【解决方案1】:

您是否考虑过使用正则表达式来匹配您要提取的数字。那会容易很多。像这样的:

matches = re.findall(r'\d+(?:\.\d+)+', firefox_version_fresh)
if matches:
  fvnf = matches[0]

假设版本是 x.y 的形式,可能后面跟着更多的子版本(例如 x.y.z)。

  • \d+ 是一位或多位数字
  • (?: )+ 是括号中的一项或多项。 ?: 告诉编译器它是一个非捕获组 - 即您对将括号内的数据作为一个单独的组提取并不感兴趣。
  • \.\d+ 匹配一个点,后跟一个或多个数字

所以整个表达式可以描述为一个或多个数字,后跟一个或多个点的出现和一个或多个数字。

【讨论】:

  • 您能否向我解释一下这种特殊情况下的正则表达式是如何工作的?
  • @l1zard 用正则表达式的解释更新了答案。还注意到我忘记转义正则表达式中的点,所以我也修复了它。
猜你喜欢
  • 1970-01-01
  • 2016-09-25
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-28
相关资源
最近更新 更多