2016-03-07 59 views
0

锻炼字符串是否持有版本号比另一个字符串在Python 3Python 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'>] 
+0

Youe示例适用于我 – Selcuk

+1

其实际适用于我... – Netwave

+2

不,工作正常:https://repl.it/BteN。你确定你没有尝试发布补丁(例如'1.2.3')吗?另外请注意,版本不会在数字上进行比较 - 例如,'1.2'不如'1.11'更新,即使它是更大的数字。 – jonrsharpe

回答

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

您可能需要使用LooseVersiondistutils.version

from distutils.version import LooseVersion as V 

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

if current < request_version: 
    print("Yay.") 
相关问题