在Python3中,一个字符串是否高于另一个字符串?
在Python3中,如果一个包含版本号的字符串高于另一个包含版本号的字符串,则进行训练 这就是我尝试过的:在Python3中,一个字符串是否高于另一个字符串?,python,python-3.x,Python,Python 3.x,在Python3中,如果一个包含版本号的字符串高于另一个包含版本号的字符串,则进行训练 这就是我尝试过的: request_version = "1.10.1" current_version = "1.11" if Decimal(request_version) > Decimal(current_version): pass 然而,我得到这个错误,为什么 InvalidOperation at /api/version/ [<class 'decimal.Conver
request_version = "1.10.1"
current_version = "1.11"
if Decimal(request_version) > Decimal(current_version):
pass
然而,我得到这个错误,为什么
InvalidOperation at /api/version/
[<class 'decimal.ConversionSyntax'>]
invalidOperationat/api/version/
[]
您试图将版本字符串转换为浮点数,但由于1.2.3
不是有效的浮点数,因此转换失败
对于这类事情,您可能需要的是实现版本语义(以及其他细节)的包:
来自packaging.version导入解析的>>
>>>请求_version=parse(“1.10.1”)
>>>当前版本=解析(“1.11”)
>>>请求\u版本>当前\u版本
假的
>>>请求\u版本<当前\u版本
真的
此
解析
将创建一个版本
对象,该对象允许在版本之间进行比较您试图将版本字符串转换为浮点数,但由于1.2.3
不是有效的浮点数,因此转换失败
对于这类事情,您可能需要的是实现版本语义(以及其他细节)的包:
来自packaging.version导入解析的>>
>>>请求_version=parse(“1.10.1”)
>>>当前版本=解析(“1.11”)
>>>请求\u版本>当前\u版本
假的
>>>请求\u版本<当前\u版本
真的
此
解析
将创建一个版本
对象,该对象允许在版本之间进行比较您可能希望从distutils使用版本
。版本
:
from distutils.version import LooseVersion as V
current = V('1.10.1')
request_version = V('1.11')
if current < request_version:
print("Yay.")
从distutils.version导入版本为V
电流=V('1.10.1')
请求_版本=V('1.11')
如果当前
您可能需要使用distutils.version
中的LooseVersion
:
from distutils.version import LooseVersion as V
current = V('1.10.1')
request_version = V('1.11')
if current < request_version:
print("Yay.")
从distutils.version导入版本为V
电流=V('1.10.1')
请求_版本=V('1.11')
如果当前
Youe示例适用于Meit它实际上适用于我…不,很好:。你确定你没有尝试发布补丁(例如1.2.3
)或其他什么吗?另外,请注意,版本之间没有数字上的比较-1.2
比1.11
更新,即使它是一个更大的数字,例如。那么:1。答案显而易见(“为什么?”——因为1.10.1
不是一个有效数字);及:2。您仍然会遇到这样一个问题:将它们作为数字进行比较恰恰是错误的方法。版本字符串不是十进制数字!使用专门用于比较版本字符串的函数。您的示例适用于meits,实际上适用于我…不,很好:。你确定你没有尝试发布补丁(例如1.2.3
)或其他什么吗?另外,请注意,版本之间没有数字上的比较-1.2
比1.11
更新,即使它是一个更大的数字,例如。那么:1。答案显而易见(“为什么?”——因为1.10.1
不是一个有效数字);及:2。您仍然会遇到这样一个问题:将它们作为数字进行比较恰恰是错误的方法。版本字符串不是十进制数字!使用专门用于比较版本字符串的函数。