字符串是否高于Python 3中的另一个字符串?

时间:2016-03-07 11:42:33

标签: python python-3.x

如果持有版本号的字符串高于在Python 3中持有版本号的另一个字符串,则进行锻炼。

这就是我的尝试:

request_version = "1.10.1"
current_version = "1.11"
if Decimal(request_version) > Decimal(current_version):
    pass

但是,我收到此错误,为什么?

InvalidOperation at /api/version/
[<class 'decimal.ConversionSyntax'>]

2 个答案:

答案 0 :(得分:4)

您正在尝试将版本字符串转换为浮点数,因为1.2.3不是有效的浮点数而失败。

你可能想要的这类东西是packaging包,它实现了PEP 440版本的语义(以及其他细节):

>>> from packaging.version import parse
>>> request_version = parse("1.10.1")
>>> current_version = parse("1.11")
>>> request_version > current_version
False
>>> request_version < current_version
True

这个parse将创建一个Version对象,允许比较版本

答案 1 :(得分:1)

您可能希望使用LooseVersion中的distutils.version

from distutils.version import LooseVersion as V

current = V('1.10.1')
request_version = V('1.11')

if current < request_version:
    print("Yay.")