提取列表python3中的非字符串元素

时间:2018-08-05 19:36:42

标签: python

我有一个列表,其中每个元素都存储为字符串

A = ['a', 'b', 'c', '100','200.6']

如何仅提取数字元素

[100, 200.6]

我无法使用[float(i) for i in temp]来转换元素,因为不能将字符串元素转换为float。我需要按原样保留字符串元素,然后过滤掉数字元素。

1 个答案:

答案 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']