我有一个列表,其中每个元素都存储为字符串
A = ['a', 'b', 'c', '100','200.6']
如何仅提取数字元素
[100, 200.6]
我无法使用[float(i) for i in temp]
来转换元素,因为不能将字符串元素转换为float。我需要按原样保留字符串元素,然后过滤掉数字元素。
答案 0 :(得分:0)
在简单情况下,您可以使用re.match
检查元素是否与带小数点的数字匹配,然后将其转换为浮点数
>>> A = ['a', 'b', 'c', '100', '200.6']
>>> import re
>>> [float(e) for e in A if re.match(r'\d+\.?\d*$', e)]
[100.0, 200.6]
但是正如人们在评论中指出的那样,如果您以非常规格式浮动,则必须编写一个实用程序函数,以便在可能的情况下将字符串转换为浮动,或者返回None,然后filter
列表
>>> def is_float(n):
... try:
... return float(n)
... except:
... return None
...
>>>
>>> A = ['a', 'b', 'c', '100', '200.6']
>>> list(filter(is_float, A))
['100', '200.6']