2016-03-07 62 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.") 
相關問題