如何认可字符串是否是某个内容的版本?

2024-05-01 21:25:36 发布

您现在位置:Python中文网/ 问答频道 /正文

仅供参考,它不是重复的请删除此标签。

我试过packaging.version.Version它对1.0.2h192.168.0.3不起作用。你知道吗

问题

我正在列表中获取不同库/二进制文件的版本。这个列表包括一些版本的垃圾值和正确的值。我想写一个python代码,可以将正确的代码从版本列表中分离出来。你知道吗

请推荐一个逻辑或python库,它可以完成以下操作

Psuedo代码

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]

Tags: 文件代码版本列表version二进制标签逻辑
1条回答
网友
1楼 · 发布于 2024-05-01 21:25:36

你要找的是regular expression。此链接为您提供有关python正则表达式的文档。你知道吗

这个正则表达式可以完成以下任务:'(([0-9]+[.]){1,2}([0-9]*([0-9]|[a-z]){0,2}[0-9]+)'

您可以使用findall()方法并测试结果是否与您测试的字符串相同。代码如下(我没有测试过):

import re
Correct_verList = []

verList = ['2.6.36', '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']

for ver in verList:
    a=re.findall('(([0-9]+[.]){1,2}([0-9]*([0-9]|[a-z]){0,2}[0-9]+)',ver)
    if len(a)!=0:
       if a[0][0]==ver:
           Correct_verList.append(ver)
print(Correct_verList)

相关问题 更多 >