在python中从列表中提取浮点数

在python中从列表中提取浮点数,python,extract,Python,Extract,我想从列表a=[]中获取所有浮点数,并将其添加到名为number=[]的新列表中。有人能帮我处理这个代码吗?现在它给了我一个空白输出 a = ['1.2.1','2.1.2', '4', 'invalid'] numbers = [] for item in a: if item == float: numbers.append(item) print(numbers) 期望输出: numbers = ['1.2.1','2.1.2'] 可以将re.match与以下正

我想从列表a=[]中获取所有浮点数,并将其添加到名为number=[]的新列表中。有人能帮我处理这个代码吗?现在它给了我一个空白输出

a = ['1.2.1','2.1.2', '4', 'invalid']
numbers = []
for item in a:
    if item == float:
        numbers.append(item)
print(numbers)
期望输出:

numbers = ['1.2.1','2.1.2']
可以将re.match与以下正则表达式模式一起使用:

import re
a = ['1.2.1', '2.1.2', '4', 'invalid']
print([s for s in a if re.match(r'\d+(?:\.\d+)+$', s)])
这将产生:

['1.2.1', '2.1.2']

1.2.1和2.1.2不是浮点数。我们怎样才能得到它们?你的意思是用点分隔数字的字符串吗?是的,这些是1.2.1,2.1.2。我们如何将它们添加到一个新列表中?您能更好地描述您的数字吗?它们总是有两个点,还是同时有1.2和1.2.3种?我如何从输出中创建一个新列表?newlist=['1.2.1','2.1.2']newlist=[s代表if re.matchr'\d+?:\.\d++$,s]感谢您的帮助。它工作得很好。你能帮我理解代码中到底发生了什么吗?