从下面的列表中,我尝试仅提取数字(整数和 float )和版本号(仅用点分隔)。
[u'3.1.1', u'3.2', u'3.1.2', u'3', u'3.3.0', u'3.3.1-1', u'3.2.2', u'latest']
尝试了以下代码。它没有删除 3.3.1-1。需要正则表达式方面的帮助。 还有什么最快的方法吗?
def myfunc(self, img_list):
ret = list()
for i in img_list:
try:
if re.match("([\d.]+)", i):
ret.append(i)
elif float(i):
ret.append(i)
except Exception as e:
display.vvv("Error: %s" % str(e))
pass
return ret
最佳答案
使用理解的另一个解决方案:
lst = [u'3.1.1', u'3.2', u'3.1.2', u'3', u'3.3.0', u'3.3.1-1', u'3.2.2', u'latest']
results = [i for i in lst if i.replace('.', '').isdigit()]
print results
输出:
[u'3.1.1', u'3.2', u'3.1.2', u'3', u'3.3.0', u'3.2.2']
关于python需要帮助来提取模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47405420/