【发布时间】:2019-10-14 16:53:06
【问题描述】:
仅供参考,不重复请删除此标签。
我已经尝试过packaging.version.Version,它在1.0.2h 和192.168.0.3 上不起作用。
问题
我正在列表中获取不同库/二进制文件的版本。这个列表包括一些版本的垃圾值以及正确的值。我想编写一个python代码,可以将正确的从版本列表中分离出来。
请推荐一个可以执行以下操作的逻辑或python库
伪代码
Correct_verList = []
verList = ['2.6.36', '1.2.dfgdf', '1.sdfsdgsdsf', '3.0/0+3*/1,-/0/0,//O*K1', 'so.802', '5.0(side)', '6.2*20hm' , '192.168.0.222', '1.33', '0.97a', '1.0.2h', '2.4.2b3']
#Psuedo Code
for ver in verList:
if ver is the correct version:
Correct_verList.append(ver)
print(Correct_verList)
预期输出
Correct_verList = [1.33, 0.97a, 2.6.36, 1.0.2h, 2.4.2b3]
【问题讨论】:
-
@DeveshKumarSingh 亲爱的,它是不同的,因为它是找出一个字符串是否是版本。和你建议的版本比较。
-
如果您再次查看答案
version.Version("1.3.xy123")检查字符串是否为有效版本 -
packaging.version.Version似乎不允许1.0.2h。 -
packaging.version.Version说192.168.0.12是一个版本,实际上它不是一个版本。 -
由于重复而无法添加答案,但如果您的要求是非常具体的数字,后跟句点,后跟字母和数字的组合,可选地后跟句点和 a 的组合字母和数字,你可以用正则表达式来解决它,比如
import re; result = [x for x in verList if re.fullmatch('\d+\.\w+(\.\w+)?', x)]