如果给出了字符串类型数据的列表,例如,如果列表x包含以下内容:
x = ['98.7','100.5','%','','12.33','&','10']
如何从列表中删除非%
,''
,10
和&
等非浮点元素?另外,我如何删除NoneType元素?
答案 0 :(得分:0)
一种方法,几乎绝对不是最好的方式:
def is_float_string(string):
try:
float(string)
except ValueError:
return False
return str(float(string)) == string
[ i for i in x if is_float_string(i) ]
#['98.7', '100.5', '12.33']
答案 1 :(得分:0)
有很多方法可以做到这一点,但以下方式是我第一次想到的方式:
>>> x = ['98.7','100.5','%','','12.33','&','10']
>>> y = [i for i in x if i.strip('0123456789') == '.']
>>> y
['98.7', '100.5', '12.33']
感谢 Padraic Cunningham 和 adivk 的评论。我承认我的答案并不完美,但这种问题总是依赖于你真正的清单包含了什么。我修改了它,现在它更普遍。但是,对于实际使用,可能仍需要修改它。
y = [i for i in x if i and i != '.' and i.strip('0123456789') in ['.', '-.']]