コンテンツにスキップ

Top

Python でバージョン文字列の大小比較をしたい

version 1.1 と version 1.2 のどちらが最新か?は人間ならすぐわかるが文字列比較でやろうとしたら結構大変。

そんなときに有益なライブラリを紹介します!

バージョン比較

バージョン文字列を distutils.version の LooseVersionに渡して比較する。

1
2
3
4
5
6
7
8
9
# python3
Python 3.5.5 (default, Sep 26 2019, 02:52:15) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from distutils.version import LooseVersion, StrictVersion
>>> print(LooseVersion('version 1.2') > LooseVersion('version 1.1'))
True
>>> print(LooseVersion('version 1.0') > LooseVersion('version 1.1'))
False

うん、いい感じ!

1.1 とかのアルファベットとかない数字だけの場合は StrictVersion を用いることができる。
名前からして多分厳密っぽいのでよさそう。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ python3
Python 3.5.5 (default, Sep 26 2019, 02:52:15) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

>>> from distutils.version import LooseVersion, StrictVersion

>>> print( StrictVersion('2.1.2') > StrictVersion('2.1.1'))
True

>>> print( StrictVersion('2.0.2') < StrictVersion('2.1.1'))
True

以上!

おまけ

なんか最近は from packaging import version を使うみたい。

以上!