python:点分隔版本比较[重复]

Posted

技术标签:

【中文标题】python:点分隔版本比较[重复]【英文标题】:python: dot separated versions comparizon [duplicate] 【发布时间】:2013-11-19 08:23:43 【问题描述】:

我正在编写一个脚本,我需要比较二进制文件的版本,所以例如我需要得到 10.2.3 大于 10.1.30 。如果我删除点,我会得到 1023 和 10130,这会颠倒我的比较。

10.2.3 > 10.1.30  ==  1023 !> 10130 

到目前为止,我出来的唯一解决方案是:

1. do split(".") on version number 
2. for each elemet of list i got, check  if len() is eq 1 , add one zero from  the left.
3. glue all  elements together and get  int (10.1.30 will became 100130).
4. process second version number same way and compare both as regular ints.

这样:

10.2.3 > 10.1.30  ==  100203 > 100130 

这是比较版本的唯一方法还是有其他方法?

【问题讨论】:

【参考方案1】:

你可以借用distutils及其后继者用来比较版本号的代码

from distutils.version import StrictVersion # Or LooseVersion, if you prefer

if StrictVersion('10.2.3') > StrictVersion('10.2'):
    print "10.2.3 is newer"

【讨论】:

谢谢,如果我需要比较 N 个 uniq 版本号怎么办? distutils.version 有这方面的东西吗? 如何定义超过 2 个项目的比较? 我明白了)。愚蠢的问题。【参考方案2】:

你可以试试:

list(map(int, '10.2.3'.split('.'))) > list(map(int, '10.1.30'.split('.')))
Out[216]: True

【讨论】:

非常感谢 Aknur,也会检查一下。

以上是关于python:点分隔版本比较[重复]的主要内容,如果未能解决你的问题,请参考以下文章

更改时间跨度毫秒分隔符;逗号(,)代替点(。)[重复]

Python中的千位分隔符[重复]

DecimalFormat("0.0") 返回以逗号而不是点作为分隔符的数据[重复]

在shell中,用点作为分隔符分割字符串的一部分[重复]

Python split() 不删除分隔符[重复]

Python将数据框转换为逗号分隔的行[重复]