python - 如何准确地将解析后的字符串形式的版本号更改为数字?

标签 python

假设我有一个检索到的目录名称“LibX_00.03”,我使用以下方法检索该目录的版本信息:

lib = "LibX_00.03"

version = lib[-5:]

完成此操作后,我想将此版本号与其他版本号进行比较,以断言该库的最新版本,但问题在于必须采用数字形式进行比较,而不是字符串。 转换为 int 或 float 都不起作用,因为 int 会给出整数,而 float 会给出不准确的转换:

>>> float(version)
0.299999...

那么如何才能准确地保留版本号,同时将其保存在进行比较的表单中呢?

最佳答案

>>> from distutils.version import StrictVersion
>>> StrictVersion('00.03') > StrictVersion('00.10')
False
>>> StrictVersion('00.03') > StrictVersion('00.02')
True

请注意,如果您将 '1.0b' 作为版本字符串,则此操作将不起作用,为此使用 LooseVersion:

>>> from distutils.version import LooseVersion
>>> LooseVersion('1.2b') > LooseVersion('0.1')
True
>>> LooseVersion('1.2b') > LooseVersion('1.2c')
False

关于python - 如何准确地将解析后的字符串形式的版本号更改为数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12072973/

相关文章:

python - Pandas:独立地将函数应用于每个组

python - 是否可以通过 scapy 创建 HTTP 响应

python - python linkedinapi 出现 "NoneType"对象没有属性错误

python - 检查下一行然后实现该行应该去哪里

python - GEE Python API : Export image to Google Drive fails

python - Twisted Names - 权威服务器 - 多个区域

python - 在 Ipython 中使用 Pylint(Jupyter-Notebook)

Python 3 - 代码不会将大于 1 的用户输入识别为数字

Python urllib2 : How to eliminate urllib2 add it's own headers

python - 如何使用列表作为数据框中的搜索条件?